1

我的控制器有一个计算属性:

App.IndexController = Ember.ArrayController.extend({

    grandTotal: function () {
        return this.getEach('total').reduce(function(accum, item) {
            return accum + item;
        }, 0);
    }.property('@each.total'),

});

但我无法用我的视图访问它。这是我的看法:

App.SummaryView = Ember.View.extend({

    templateName: 'summary',

    companiesChanged: function() {
        Ember.run.once(this, 'logCompanies');
    }.observes('controller.@each'),

    logCompanies: function() {
        console.log(this.get('controller').get('model').get('length'));
        console.log(this.get('controller').get('grandTotal'));
    }

});

.get('length')返回正确,所以我知道何时调用模型已加载。但是grandTotal回来了NaN,即使我知道它编码正确,因为它正在模板中呈现。出于其他原因,我需要在我的视图中访问它。

有任何想法吗?

4

1 回答 1

1

即使控制器的计算属性随着@each.total 的变化而变化,视图也只关心控制器的属性。因此,视图错误地观察了@each 模型,而它本应该只是观察controller.grandTotal

App.SummaryView = Ember.View.extend({

    templateName: 'summary',

    companiesChanged: function() {
        Ember.run.once(this, 'logCompanies');
    }.observes('controller.grandTotal'),

    logCompanies: function() {
        console.log(this.get('controller').get('model').get('length'));
        console.log(this.get('controller').get('grandTotal'));
    }

});
于 2013-07-18T16:11:14.400 回答