2013-02-19 36 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