2013-02-14 3 views
17

Cheers! У меня есть модель, и один ее атрибут - это массив, но по некоторым причинам (я использую mongoDB на сервере, и это проблема со встроенными моделями и данными ember-данных). Я не могу делать ничего подобного:Ember.js массив как модель

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-данных, как быть?

+0

Нам нужно больше информации здесь. Я думаю, вы ищете трансформацию. – albertjan

+0

Обновлено, спасибо. – xamenrax

ответ

30

я обнаружил, что на самом деле вы можете иметь свойства массива из коробки, просто не указав тип.

#coffeescript 

AskuWhiteLabel.SomeModel = DS.Model.extend 
    some_ids: DS.attr() 

Я использую это, и когда я делаю это

myModel.set('some_ids', [1,2,3]) 
myModel.save() 

Полезную нагрузку на сервер действительно мой массив, как есть.

+2

Привет, Энди, я задал этот вопрос 14 февраля 13, так что это может быть устаревшим или что-то вроде. – xamenrax

+0

@nikita без проблем! Да, я не нашел там никакой документации, думаю, я просто попробовал. Надеюсь, поможет! – andy

+1

Да, это мне помогает: D – inquisitive

3

Для тех, у кого есть такая же проблема, как и я: проверить этот ответ:

https://stackoverflow.com/a/13884238/1662820

Или вы можете пройти встроенные модели с hasMany связи и набор пользовательских первичный ключ для встраиваемых модель в адаптере («номер» в моем случае). Посмотрите на это тесты:

https://github.com/emberjs/data/blob/master/packages/ember-data/tests/integration/embedded/embedded_without_ids_test.js

2
anArrayAttr: DS.attr('raw', { defaultValue: function() { return []; } }) 

С моей удивительной коллеги 'Терон Humiston'

+0

Что такое 'raw'? вы определили пользовательское преобразование? – kumkanillam

Смежные вопросы