Ember ModelでEmber RC6.1を使用しています。モデル クラスのプロパティを Ember モデルのクラスのインスタンスに設定してを実行すると、結果の Ember 配列に追加されるオブジェクトごとにアサーションがスローされます。スタック トレースは、オブジェクトが配列にプッシュされ、挿入され、置き換えられたことを示しています。なぜ後者(交換)が発生するのかわかりません。これは、暗黙的なソートの結果である可能性があります。adapter
RESTAdpater
findAll
プッシュごとに、(から継承する)content
のインスタンスのプロパティを変更する前に設定する必要があることを示すアサーションがスローされます。RecordArray
ArrayProxy
Assertion failed: The content property of Ember.RecordArray should be set before modifying it
結果の配列は正常に動作しますが、これは Ember モデルまたは Ember 自体のバグなのか疑問に思っています。Ember Model のドキュメントに従って API からデータを取得すること以外に、私は何もしていないので、私のコードはこのバグの原因ではないと思います。
以下にスタックトレースを追加しました。
(anonymous function) application.js:6108
Ember.assert application.js:5799
Ember.ArrayProxy.Ember.Object.extend._replace application.js:17977
Ember.ArrayProxy.Ember.Object.extend._insertAt application.js:17992
Ember.ArrayProxy.Ember.Object.extend.pushObject application.js:18036
superWrapper application.js:6826
Ember.Model.reopenClass.addToRecordArrays application.js:5251
(anonymous function) application.js:5242
sendEvent application.js:7843
Ember.Evented.Ember.Mixin.create.trigger application.js:16867
Ember.Model.Ember.Object.extend.load application.js:4792
Ember.Model.reopenClass.findFromCacheOrLoad application.js:5280
(anonymous function) application.js:4453
Ember.RecordArray.Ember.ArrayProxy.extend.materializeData application.js:4452
Ember.RecordArray.Ember.ArrayProxy.extend.load application.js:4435
Ember.RESTAdapter.Ember.Adapter.extend.didFindAll application.js:5585
(anonymous function) application.js:5576
invokeCallback application.js:12843
(anonymous function) application.js:12886
EventTarget.trigger application.js:12674
(anonymous function) application.js:12941
DeferredActionQueues.flush application.js:10648
Backburner.end application.js:10338
Backburner.run application.js:10377
Ember.run application.js:10859
settings.success application.js:5697
fire application.js:38117
self.fireWith application.js:38228
done application.js:45154
callback
更新: への呼び出しpushObject
は Ember Model によって実行されます。addToRecordArrays
のインスタンスにレコードを追加するメソッドであるの実装を追加しましたRecordArray
。
addToRecordArrays: function(record) {
if (this._findAllRecordArray) {
this._findAllRecordArray.pushObject(record);
}
if (this.recordArrays) {
this.recordArrays.forEach(function(recordArray) {
recordArray.pushObject(record);
});
}
}