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/

4

2 回答 2

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/

于 2013-10-30T18:46:17.307 回答
0

我找到了解决方案。无需访问,每个 Route 中都有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/

于 2013-10-31T08:46:16.457 回答