我有一个 AlertsController ,其下面有多个 AlertController 子项。当用户点击警报时,我在 AlertView 的 AlertController 中将 isSelected 标志设置为true。然后我在 AlertsController 中有一个计算属性,它应该返回所选警报的数量。
AlertsController和AlertController如下所示:
App.AlertsController = Ember.ArrayController.extend({
itemController: 'Alert',
//numSelected doesn't update when isSelected flag in an alert changes
numSelected: function(){
return this.filterProperty('isSelected', true).get('length');
}.property('@each.isSelected')
});
App.AlertController = Ember.ObjectController.extend({
isSelected : false,
});
我知道 AlertController 中的 isSelected 属性正在更新,但 AlertsController 中 numSelected 的值是只在页面加载时计算一次。
我在下面的小提琴中重新创建了我的问题:
JSFiddle:http://jsfiddle.net/WLAnF/8/
有谁知道我在这里做错了什么?谢谢你的帮助!
答案 0 :(得分:1)
您不应在isSelected
中定义App.AlertController
:
App.AlertController = Ember.ObjectController.extend({
// isSelected : false,
});
参见工作演示:http://jsfiddle.net/BQmww/1/
原因是,如果您在isSelected
中明确定义App.AlertController
,它将无法在代理的content
对象中使用(因此{{1}无法访问它}})。