Ember.js массив как свойство модели
Ура!
У меня есть модель, и один ее атрибут - это массив, но по некоторым причинам (я использую mongoDB на сервере, и это проблема со встроенными моделями и ember-данными), я не могу сделать что-то вроде этого:
App.Foo = DS.Model.extend({
...
numbers: DS.hasMany('App.Bar')
)};
App.Bar = DS.Model.extend({
...
number: DS.attr('number')
});
Мне нужно что-то вроде этого:
App.Bar = DS.Model.extend({
numbers: DS.attr('array')
});
Но не существует типа массива атрибутов в данных ember-данных, как быть?
Ответы
Ответ 1
Я обнаружил, что на самом деле вы можете иметь свойства массива из коробки, просто не указав тип.
#coffeescript
AskuWhiteLabel.SomeModel = DS.Model.extend
some_ids: DS.attr()
Я использую это, и когда я это делаю
myModel.set('some_ids', [1,2,3])
myModel.save()
Полезная нагрузка на сервер - это действительно мой массив, как есть.
Ответ 2
Для тех, у кого такая же проблема, как и я:
ответьте на этот вопрос:
fooobar.com/questions/175076/...
Или вы можете передать встроенные модели с отношением hasMany и установить пользовательский первичный ключ для встроенной модели в адаптер ( "номер" в моем случае). Посмотрите на эти тесты:
https://github.com/emberjs/data/blob/master/packages/ember-data/tests/integration/embedded/embedded_without_ids_test.js
Ответ 3
anArrayAttr: DS.attr('raw', {defaultValue: function() {return [];}})
- От моего удивительного коллеги 'Theron Humiston'