在emberjs PRE2我們可以在 在控制器訪問控制或任何方法從另一個控制器方式如下:Emberjs - 如何從另一個控制器」
App.get('訪問一個控制器的方法路由器)獲得( 'navController')方法1();
任何人都可以建議什麼可能是類似的代碼爲emberjs rc1?
感謝
在emberjs PRE2我們可以在 在控制器訪問控制或任何方法從另一個控制器方式如下:Emberjs - 如何從另一個控制器」
App.get('訪問一個控制器的方法路由器)獲得( 'navController')方法1();
任何人都可以建議什麼可能是類似的代碼爲emberjs rc1?
感謝
裏面一個Controller
或Route
你可以嘗試
this.controllerFor("nav").method1()
這是當有人問正確的答案,但因爲controllerFor
已過時,請檢查joscas
在這種情況下,您可以通過點擊左側的刻度標記來接受答案 – 2013-03-07 07:42:47
有什麼方法可以從視圖調用控制器方法? – 2013-03-08 17:37:14
其實controllerFor已棄用....所以我們應該使用需要 – 2013-03-08 18:12:20
由於controllerFor
已過時,我認爲一個更正確的方法是用需求:
this.get('controllers.nav').method1()
它需要聲明你需求在你的控制器:
App.YourController = Ember.ObjectController.extend({
needs: ['nav'],
....
這應該是新接受的答案。 – DelphiLynx 2014-02-04 14:35:50
文檔:http://emberjs.com/guides/controllers/dependencies-between-controllers/ – givanse 2014-05-09 05:04:35
在餘燼2,此作品通過注入您想要訪問的控制器:
export default Ember.Controller.extend({
nav: Ember.inject.controller(),
});
或者,如果你要指定控制器名稱不同的名稱:
export default Ember.Controller.extend({
navController: Ember.inject.controller('nav'),
});
然後,您可以像這樣訪問注入控制器的方法:
this.get('navController').method1()
我一直在試圖按照數據下來的行動範式。你如何做類似的事情是使用建議的依賴注入@Def_Os,但是在應用程序路由上執行。 然後,不要直接調用該方法,只需發送該操作並讓它冒泡到應用程序路由。這避免了在大型項目中難以管理的2個控制器之間複雜的直接相關性。 – 2016-03-21 07:02:27
我一直努力遵循數據將行動向下推進範式。你如何做類似的事情是使用建議的依賴注入@Def_Os,但是在應用程序路由上執行。 – 2016-03-21 07:01:01