2016-01-21 27 views
0

我試圖讓我每次擊中某個控制器/路線時得到一個圖形重繪。還有其他頁面的輸入被改變,並且當'造型師'頁面被導航到時,圖形需要重新繪製。隨後在建模器頁面上進行的輸入更改會導致重繪,但每次導航到該圖形時,圖形最初都會被錯誤地縮放。因此,我需要在您到達'建模者'頁面的那一刻基於所有新輸入進行重繪。Ember.js 2觸發控制器的動作,當你打它的路線

export default Ember.Controller.extend({ 
    calculator: Ember.inject.service(), 

    needs: ['modeller'], 

    init: function() { 
    this.drawCharts(); 
    }, 
}) 

所以在init()的應用程序啓動時只被調用一次,但我需要的東西來稱呼它只要「建模」的路線被擊中。

我試着加入這個控制器,但無濟於事:

doSomething: function() { 
    console.log("currentPath"); 
    return; 
}.observes('currentPath'), 

而且我試圖從路由器觸發它:

var Router = Ember.Router.extend({ 
    location: config.locationType, 
    doSomething: function() { 
    console.log("didTransition in router"); 
    this.get('controllers.modeller').init(); 
    return; 
    }.on('didTransition'), 
}); 

...幾乎工程 - 「路由器中的didTransition」已記錄,但我無法再引用控制器。它說「this.get(...)未定義」??

任何幫助表示讚賞。謝謝。

回答

2

modeller路線didTransition掛鉤的利用:

actions: { 
    didTransition: function() { 
    this.controller.drawCharts(); 
    return true; // Bubble the didTransition event 
    } 
}