Ember.js数组作为模型的属性

时间:2013-02-14 16:07:10

标签: javascript ember.js ember-data

干杯! 我有一些模型,它的一个属性是一个数组,但由于某些原因(我在服务器上使用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-data中没有数组类型的属性,怎么样?

3 个答案:

答案 0 :(得分:33)

我发现实际上你可以通过不指定类型来开箱即用数组属性。

#coffeescript

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

我正在使用它,当我这样做时

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

服务器的负载确实是我的数组。

答案 1 :(得分: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 :(得分:1)

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

来自我的同事#Theron Humiston'