EmberJS属性不会在创建记录上自动更新

时间:2014-01-19 15:17:01

标签: javascript ember.js ember-data

我的应用程序有一个名为Balance的模型,我们可以添加数量和描述。我创建了一个动作来添加一些平衡记录,当你点击一个按钮,它到目前为止工作得很好。问题是我创建了一个名为“totalBalance”的控制器属性来检索和计算数据库中的总量,它工作得很好并且它在页面中显示但是当我添加新记录并且我想要它时它不会更新实时更新。

这是我的代码:

平衡控制器

App.BalanceController = Ember.ArrayController.extend({

    totalBalance: function() {
        var total = 0;

        this.store.all('balance').forEach(function(item) {
            total = total + item.get('amount');
        });

        return total;

    }.property('balance.@each'),

    actions: {
        generateBalance: function() {
            var balance = this.store.createRecord('balance', {
                amount: 1270.84,
                description: 'Some dummy description for this balance.'
            });
            balance.save();
        }
    }
});

余额模式

App.Balance = DS.Model.extend({
    amount: DS.attr('number'),
    description: DS.attr('string')
});

平衡路线

App.BalanceRoute = Ember.Route.extend({
    model: function() {
        return this.store.find('balance');
    }
});

1 个答案:

答案 0 :(得分:2)

我认为问题在于您为totalBalance指定依赖键的方式。我会尝试这样做:

App.BalanceController = Ember.ArrayController.extend({

  totalBalance: function() {
    var total = 0;

    this.forEach(function(item) {
        total = total + item.get('amount');
    });

    return total;

  }.property('content.@each.amount')
});

作为一个更清晰的选项,您还可以使用reduceComputed属性来指定执行here之类的总和。