1

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

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

如果我调用.target它,我会得到对 的引用Discourse.Router,这对我没有好处。

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

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

4

1 回答 1

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');
        }
    }
});

文档

你可以:

  1. 处理控制器中的一部分动作,并通过在控制器的动作处理程序中不返回任何内容来让它冒泡到路由
  2. 让路由处理动作(通过不将动作添加到控制器的动作散列中)并从路由this.controllerFor(this.routeName).sendAction('..', ...)中调用控制器中的不同动作(或动作的一部分)。

我希望这可以帮助你!

于 2014-01-09T15:37:12.027 回答