在ember中,访问有很多来自foreach的计算属性

时间:2013-11-04 15:51:46

标签: ember.js ember-data

所以我有一个hasMany定义为如此 任务:DS.hasMany('quest')
我有一个属性应该通过每个任务并计算总数。 该函数看起来像这样,

questXP: function() {
    var amount = 0;

    this.get('quests').forEach(function(item)
    {
        console.log(item.get('xpReward'));
        amount += parseInt(item.get('xpReward'));
    });
    return amount;
}.property('quests'),  

我尝试将async:true添加到hasMany但是它会阻止forEach工作。目前它循环3次(我有3个任务),但它无法访问任何任务的属性。 我的想法是它与任务仍然被加载的事实有关。

关于我做错的任何想法?

1 个答案:

答案 0 :(得分:4)

您的计算属性取决于每个xpReward属性。因此,您需要使用quests.@each.xpReward而不是quests

questXP: function() {
    var amount = 0;

    this.get('quests').forEach(function(item)
    {
        console.log(item.get('xpReward'));
        amount += parseInt(item.get('xpReward'));
    });
    return amount;
}.property('quests.@each.xpReward'),