2013-02-19 41 views
9

如何在我的HomeController中獲得一個ApplicationController?我如何獲得ApplicationController?

HomeController=Ember.Controller.Extend({ 
    init:function { 
     // Here I want to get My application controller. Is there any way to get?? 
    } 

}) 
+0

使用「controllerFor」獲取控制器.... this.controllerFor('application')應該可以工作 – selvagsz 2013-02-19 03:57:00

回答

17

我怎樣才能讓我的HomeController裏面的ApplicationController的?

要指定控制器之間的依賴關係(或需要),使用needs屬性:

HomeController=Ember.Controller.Extend({ 
    needs: ['application'] 
}) 

現在灰燼將使應用程序控制器從您的HomeController爲controllers.application內部觸及。你可以使用它像任何其他HomeController,甚至從你的模板訪問:

<!-- inside `home` template --> 
{{controllers.application}} 

對控制器的需求詳見http://darthdeus.github.com/blog/2013/01/27/controllers-needs-explained/

順便說一句:這是非常罕見的一個燼控制器使用自定義init fx。考慮將任何初始化邏輯轉移到路由上的setupController掛鉤。

+3

2013年10月:我不得不使用'this.get('controllers.application')'而不是'controllers.application'。 – 2013-10-03 07:29:09

-1
App.HomeController = Ember.Controller.extend({ 
    init: function() { 
    var applicationController = this.controllerFor('application'); 
    } 
}); 
+2

controllerFor在1.0.0.rc1中不推薦使用,而是使用Michael Grassotti的答案中描述的需求機制。 – ianpetzer 2013-02-19 08:54:32