2013-02-19 21 views
9

HomeController'ım içinde bir ApplicationController'ı nasıl edinebilirim?ApplicationController'ı nasıl edinebilirim?

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

}) 
+0

Denetleyicileri almak için "controllerFor" kullanın .... this.controllerFor ('application') çalışmalıdır – selvagsz

cevap

17

nasıl HomeController içinde bir ApplicationController alabilirim?

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

Şimdi Kor controllers.application olarak HomeController içinden uygulama denetleyici erişilebilir hale getirecek:

kullanın needs özelliğini kontrolörleri arasındaki bağımlılıklar (veya ihtiyaçları) belirtin. Başka HomeController gibi kullanabilirsiniz, bu şablonlardan bile erişilebilir:

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

kontrolör-ihtiyaçlara daha fazla ayrıntı için http://darthdeus.github.com/blog/2013/01/27/controllers-needs-explained/ bakınız.

BTW: Bir sanal denetleyicinin özel bir init kullanabilmesi oldukça nadirdir. Herhangi bir başlatma mantığını rotada setupController kancaya taşımayı düşünün.

+3

Ekim 2013: "controllers.application" yerine "this.get ('controllers.application')' kullanmak zorundaydım. –

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

controllerFor 1.0.0.rc1 içinde kullanımdan kaldırılmıştır. Bunun yerine Michael Grassotti'nin yanıtında açıklanan gereksinim mekanizmasını kullanın. – ianpetzer

İlgili konular