重複する値を持つ可能性のある一連のデータを扱っています。最初にデータを追加するときは、クライアントで利用できるわずかな情報 (メモリ内のモデルに保存されている静的情報) を使用しています。
しかし、handlebars テンプレートが表示されるたびに最新のものを取得する必要があるため、最初の ember アプリが起動されてからサーバー側にヒットした可能性のある新しいデータを取得するために、計算されたプロパティで「findAll」も起動します。
このプロセス中に、ember-data モデルで「addObjects」メソッドを使用しますが、サーバー側が返されると、配列に重複したレコードが表示されます (同じ clientId を持っていないためと仮定します)。
App.Day = DS.Model.extend({
appointments: function() {
//this will hit a backend server so it's slow
return App.Appointment.find();
}.property(),
slots: function() {
//no need to hit a backend server here so it's fast
return App.Slot.all();
}.property(),
combined: function() {
var apts = this.get('apppointments'),
slots = this.get('slots');
for(var i = 0; i < slots.get('length'); i++) {
var slot = slots.objectAt(i);
var tempApt = App.Appointment.createRecord({start: slot.get('start'), end: slot.get('end')});
apts.addObjects(tempApt);
}
return apts;
}.property()
});
約束が解決されたときに「これは既に AdapterPopulatedRecordArray に存在するため、2 回表示する代わりにその値を更新する」ことがわかるように、ember-data モデルにそれを一意にする理由を伝えることは可能ですか?