19

干杯! 我有一些模型,它的一个属性是一个数组,但由于某些原因(我在服务器上使用 mongoDB,它是嵌入式模型和 ember-data 的问题)我不能做这样的事情:

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中没有数组类型的属性,怎么办?

4

3 回答 3

34

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

#coffeescript

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

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

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

服务器的有效负载确实是我的阵列。

于 2014-09-29T19:59:05.677 回答
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

于 2013-02-15T11:27:36.720 回答
2
anArrayAttr: DS.attr('raw', { defaultValue: function() { return []; } })

来自我很棒的同事“Theron Humiston”

于 2016-05-09T19:19:21.623 回答