2013-10-30 90 views
0

我試圖創建一個Ember.Route,我需要相應的模板來了解當前路徑的路徑。我知道那裏有ApplicationController.currentPath,但是我的路線是setupController()我可以得到ApplicationController,但是如果我得到currentPath屬性,它將返回undefined控制器的創建順序

這是爲什麼?

這是我的代碼(簡化爲只顯示問題):

AxpoEM = Ember.Application.create({}); 

AxpoEM.Router.map(function() { 
    this.route('something', { path: '/'}) 
}); 

AxpoEM.SomethingRoute = Ember.Route.extend({ 
    setupController: function(controller, model) { 
     var path = this.controllerFor('application').get('currentPath'); 
     controller.set('path', path); 
    } 
}); 

這是HTML:

<script type="text/x-handlebars" data-template-name="something"> 
    Path: {{path}}  
</script> 

這裏是一個(非)工作小提琴:

http://jsfiddle.net/Nxq6K/2/

回答

0

我找到了解決辦法。有沒有需要訪問ApplicationController,有一個routeName財產每條路線:

AxpoEM.SomethingRoute = Ember.Route.extend({ 
    setupController: function(controller, model) { 
     var path = this.get('routeName'); 
     controller.set('path', path); 
    } 
}); 

固定小提琴:http://jsfiddle.net/Nxq6K/3/

1

我得到這個工作注入ApplicationController,在SomethingController使用needs

AxpoEM.SomethingController = Ember.ObjectController.extend({ 
    needs: ['application'], 
    path: function() {   
     return this.get('controllers.application.currentPath'); 
    }.property('controllers.application.currentPath') 
}); 

更新小提琴http://jsfiddle.net/marciojunior/bDUyN/

+0

我沒有給SomethingController直接訪問。有問題的代碼位於我的真實路由繼承的ParentRoute中,因此沒有自動創建的ParentController來執行您的建議。因此,代碼應該生活在ParentRoute(我猜)。 –