控制器的创建顺序

时间:2013-10-30 18:07:44

标签: ember.js

我正在尝试创建Ember.Route,我需要相应的模板来了解当前路径的路径。我知道那里有ApplicationController.currentPath,但我的路线是setupController()我可以获得ApplicationController,但如果我获得currentPath属性,则会返回undefined。< / p>

为什么会这样?

这是我的代码(简化为显示问题):

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/

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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/