2013-07-18 67 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')); 
    } 

});