如何从控制器获取当前路径的引用?

时间:2014-01-09 14:59:22

标签: ember.js discourse

我有一个控制器(KbRelatedGroupController),它通过模板中的{{render}}助手加载。

在控制器的操作中,如果我执行this.get('target'),它将返回对页面的父控制器的引用(KbShowController)。

如果我打电话给.target,我会得到Discourse.Router的引用,这对我没用。

我想要的是对KbShowRoute的引用,这就是我所期望的,因为.target从控制器调用时应该生成路由,不是吗?

这里真的很困惑。为什么从控制器获取对当前路由的引用是如此困难?

1 个答案:

答案 0 :(得分:3)

我看待它的方式,你不应该这样做。你可以让行动冒泡到路线:

App.KbShowRoute = Ember.Route.extend({
    ...
    actions: {
        something: function() {
            console.log('called second');
        }
    }
});

App.KbShowController = Ember.Controller.extend({
    ...
    actions: {
        something: function() {
            console.log('called first');
        }
    }
});

请参阅docs

你可以:

  1. 在控制器中处理动作的一部分,并通过不在控制器的动作处理程序中返回任何内容使其冒泡到路径
  2. 让路由处理操作(通过不将操作添加到控制器的操作哈希),并从路由使用this.controllerFor(this.routeName).sendAction('..', ...)来调用控制器中的不同操作(或操作的一部分)
  3. 我希望这可以帮到你!