2

我有一个AlertsController,它下面有多个AlertController子级。当用户单击警报时,我在AlertViewAlertController中将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属性正在更新,但AlertsControllernumSelected的值仅在页面加载时计算一次。

我在以下小提琴中重新创建了我的问题:

JSFiddle:http: //jsfiddle.net/WLAnF/8/

有谁知道我在这里做错了什么?谢谢您的帮助!

4

1 回答 1

1

你不应该定义isSelectedApp.AlertController

App.AlertController = Ember.ObjectController.extend({
  // isSelected : false,
});

请参阅工作演示:http: //jsfiddle.net/BQmww/1/

原因是,如果您isSelected在 中明确定义App.AlertController,则它在代理content对象中将不可用(因此将无法通过 访问App.AlertsController)。

于 2013-10-07T08:57:23.107 回答