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

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

如果我打电话 .target 关于这一点,我得到了参考 Discourse.Router, ,这对我来说没有好处。

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

这里真的很困惑。为什么从控制器获取当前路线的参考如此困难?

有帮助吗?

解决方案

在我看来,你不应该这样做。您可以让操作冒泡到路线:

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('..', ...) 在控制器中调用不同的操作(或操作的一部分)。

我希望这可以帮助你!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top