не удалось получить свойство встроенного объекта с помощью ember.js с ember-data

Я новичок в Ember и пытаюсь понять, как это работает.

Я определил магазин с приспособлениямиAdapter в качестве адаптера (версия 7). Я определил две модели:

App.Tag = DS.Model.extend({
    name: DS.attr('string'),
    item: DS.belongsTo('App.Item')
});

а также:

App.Item = DS.Model.extend({
    name: DS.attr('string'),
    tags: DS.hasMany(App.Tag, { embedded:true }),
})

Я также заполняю связанные с ними приборы и, наконец, контроллер:

App.itemsController = Ember.ArrayController.create({
    content: App.store.findAll(App.Item)
});

Я определил функцию внутри модели App.Item:

tagline: function(){
    return this.get('tags').toArray().map(function(tag){
        return tag.get('name');
    }).join(',');
}.property('[email protected]')

Вот соответствующий jsfiddle: http://jsfiddle.net/K286Q/29/

Мои вопросы:

  • Что я делаю неправильно?
  • Почему он видит несколько тегов, связанных с первым элементом, но не может получить их имя?

person Nicolas Marigny    schedule 08.11.2012    source источник


Ответы (1)


Вы столкнулись с несколькими критическими изменениями в текущей версии ember-data.

Во-первых, начиная с версии 6 ember-data, идентификаторы нормализуются по строкам и должны быть представлены в виде строк в фикстурах. Обратите внимание, что адаптер REST будет преобразовывать числа/строки, но адаптер фикстуры не выполняет никаких преобразований. Это распространенный источник путаницы (см. предыдущий вопрос).

Во-вторых, из ember-data временно удалена поддержка встроенных объектов данных. Я почти уверен, что эта функция будет повторно представлена ​​в лучшем виде, чем поддержка {embedded: true} в атрибутах. ИМО, встраивание - это скорее проблема адаптера и на самом деле не относится к определению модели.

Я настроил ваши приборы, и ваш пример работает здесь: http://jsfiddle.net/dgeb/zHz4Y/

person Dan Gebhardt    schedule 09.11.2012
comment
Спасибо за подробные и четкие объяснения, а также обновленный пример - person Nicolas Marigny; 09.11.2012
comment
Полезный! Отсутствие (полного?) приведения id к строке в фикстурах просто укусило меня в версии 11. Хорошо знать! - person S'pht'Kr; 02.03.2013