web-dev-qa-db-ja.com

モデルのプロパティとしてのEmber.js配列

乾杯!私はいくつかのモデルを持っており、その属性の1つは配列ですが、いくつかの理由で(サーバーで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には配列タイプの属性はありません。

17
xamenrax

実際には、型を指定しないだけで、すぐに配列プロパティを使用できることがわかりました。

#coffeescript

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

私はこれを使っています、そして私がこれをするとき

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

サーバーへのペイロードは、実際には私の配列です。

33
andy

私と同じ問題を抱えている人のために:この答えをチェックしてください:

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

または、hasManyリレーションを持つ埋め込みモデルを渡し、アダプターで埋め込みモデルのカスタム主キーを設定することもできます(私の場合は「number」)。このテストを見てください:

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

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

私の素晴らしい同僚「TheronHumiston」から

1
Naveen N