以下是基本设置:
我验证了上面的#'
a。)在Chrome开发工具中,我要求
App.Day.find(1)获得('目录&#39)。得到('长度&#39); //在xhr之后返回2
b。)我也做了以下
App.Appointment.all()得到('长度&#39)。 //在xhr之后返回2
**这里是代码**
我有以下车把模板(显示3项而不是2项)
{{#each appointment in day.listings}}
{{appointment.start}}<br />
{{/each}}
我日模型中的列表计算属性如下所示
App.Day = DS.Model.extend({
name: DS.attr('string'),
appointments: function() {
return App.Appointment.find();
}.property(),
listings: function() {
//pretend we need to add some values in memory before we fire the xhr ...
App.Appointment.add({name: 'first'});
return this.get('appointments');
}.property().volatile()
});
约会模型是一个余烬数据模型,但因为我需要动态替换内存中的项目,我重写了find方法(并在我自己的add方法中使用stub来更好地控制数组)
App.Appointment = DS.Model.extend({
name: DS.attr('string')
}).reopenClass({
records: [],
find: function() {
var self = this;
self.records.clear();
$.getJSON('/api/appointments/', function(response) {
for(var i = 0; i < response.length; i++) {
for(var j = 0; j < self.records.get('length'); j++) {
if (self.records[j].get('name') === response[i].name) {
//now that our xhr has finished we need to replace any that already exist
self.records.splice(j, 1);
}
}
}
});
return this.records;
},
all: function() {
return this.records;
},
add: function(record) {
this.records.addObject(App.Appointment.createRecord(record));
}
});
答案 0 :(得分:3)
旧答案已删除。远离基地。
splice
不符合KVO标准。 replace
是符合ember标准的方法。 CollectionView依赖于replace
支持的数组变异观察器来了解要添加和删除的视图。
如果这不是问题那么我会吃掉我的帽子。