概括:
控制器计算属性问题:在一种情况下,我可以看到所有添加的内容,但没有立即看到新添加的内容(jsbin),在另一种情况下,我可以立即看到新添加的内容,但之前添加的内容没有显示起来(jsbin)。
8月26日第二次更新:
所以我在想……我有这两段互补的代码。我只需要结合它们并达到完美,对吗?可悲的是,它失败了,正如你在这个 jsbin 中看到的那样,什么也没有出现。:(
这是我结合两个 RecordArrays 的失败尝试:
officelist: function(){
var allrecords = [];
console.log("in oficelist");
// get the record array that shows previously added records
var a_recordarray = App.Office.find({org_id: 'myorgid'});
a_recordarray.forEach(function(record){
allrecords.push(record);
});
console.log(a_recordarray.toString());
console.log(allrecords.length);
// get the record array that shows newly added records
var b_recordarray = App.Office.filter(function(office) {
return office.get('org_id') === 'myorgid';
});
b_recordarray.forEach(function(record){
allrecords.push(record);
});
console.log(b_recordarray.toString());
console.log(allrecords.length);
// return the combination
return allrecords;
}.property('content.@each')
细节:
我有这个简单的 jsbin 应用程序,它在代码中使用控制器计算属性来显示要显示的名称列表。问题是,每当添加新名称时,您都必须刷新页面才能看到它显示出来。
你可以在这里看到它的代码。
具有计算属性的控制器代码:
officelist: function(){
return App.Office.find({org_id: 'myorgid'});
}.property('content.@each')
路由返回不同的模型:
App.OrganizationRoute = Ember.Route.extend({
model: function() {
return App.Org.find();
}
});
车把:
{{#each officelist}}
<li>{{officename}} </li>
{{/each}}
约束:我确实需要存在“org_id”,并且确实需要让路由模型返回与显示的模型不同的模型。
8 月 26 日更新:乔纳森取得了一些进展,但请参阅我对他的回答的评论,因为它并没有完全解决问题。
8 月 24 日更新:增加了要显示的数据与路由器模型中返回的数据不同的复杂性。(也将 ArrayController 更改为 ObjectController,但此更改没有任何后果,因为 ObjectController 也具有该content
属性。),下面是旧的东西:
具有计算属性的控制器代码:
officelist: function(){
return App.Office.find({org_id: 'myorgid'});
}.property('office.@each')
车把:
{{#each officelist}}
<li>{{officename}} </li>
{{/each}}