【问题标题】:Aggregated Computed property not getting updated in ember聚合计算属性未在 ember 中更新
【发布时间】:2013-05-08 22:31:40
【问题描述】:

聚合计算属性未在 ember 中更新

Val.set('arr',[]);
Val.set('arr',[{val:1},],[{val:2}],[{val:3}],[{val:4}]);
Val.reopen({
    total:function(){
           var array=this.get('arr');
           var total=0;
           for(i=0;i<array.length;i++)
           {
               total=total+array[i].val
           }
           return total;
    }.property('arr.@each'),
});

这个东西第一次工作,但是当数组元素更新时,属性观察者永远不会被第二次调用。

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    如果您想观察数组中对象的属性,那么您在这里缺少一些东西:

        ...
        }.property('arr.@each')
    

    尝试将您的代码更改为此

        ...
        }.property('arr.@each.val')
    

    否则 ember 只会注意到数组本身的变化(删除/添加元素),而不会更改数组内这些对象的属性。

    不是答案的一部分,但作为一种灵感,您可以使用内置的reduce 方法更方便地执行您的总体方法:

     Val.reopen({
       total:function(){
         var total = this.get('arr').reduce(function(a, b) {
           return a.val + b.val;
         });
         return total;
       }
     });
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 1970-01-01
      • 2012-08-04
      • 2017-04-10
      • 2014-08-19
      • 1970-01-01
      • 2019-04-18
      • 2015-11-16
      相关资源
      最近更新 更多