2013-07-18 43 views
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('[email protected]'), 

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

}); 

.get('length')回到正确的,所以我知道这就是所谓的模型被加载。但是,grandTotal即将回到NaN,即使我知道它在模板中呈现后编码正确。出于其他原因,我需要在我的视图中访问它。

任何想法?

+0

做这项工作:'变种自我=这一点; Ember.run.next(function(){console.log(self.get('controller.grandTotal'));});' –

+0

nope,它不是 –

+0

它肯定与计算的属性部分有关。如果我将一个属性添加到控制器:'simple:'test'',我可以在视图中访问它。 –

回答

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')); 
    } 

});