2013-02-19 10 views
9

Jak mogę uzyskać ApplicationController wewnątrz mojego HomeController?Jak uzyskać ApplicationController?

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

}) 
+0

Użyj "controllerFor", aby uzyskać kontrolery .... this.controllerFor ("aplikacja") powinna działać – selvagsz

Odpowiedz

17

Jak mogę uzyskać ApplicationController wewnątrz mojego HomeController?

Aby określić zależności (lub potrzeb) między kontrolerami, należy użyć właściwości needs:

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

Teraz Ember uczynią sterownik aplikacja dostępna od wewnątrz HomeController jako controllers.application. Można go używać jak każdy inny HomeController jest jeszcze dostępny z szablonów:

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

Zobacz http://darthdeus.github.com/blog/2013/01/27/controllers-needs-explained/ uzyskać więcej szczegółów na temat kontrolera potrzeb.

BTW: Rzadko zdarza się, by kontroler ember używał niestandardowego init fx. Rozważ przeniesienie dowolnej logiki inicjalizacyjnej do haka setupController na trasie.

+3

paź 2013: Musiałem użyć 'this.get ('controllers.application')' w przeciwieństwie do 'controllers.application'. –

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

controllerDla jest przestarzała w 1.0.0.rc1 .. Zamiast korzystać z mechanizmu potrzeb opisanych w odpowiedzi Michaela Grassottiego. – ianpetzer