【问题标题】:Ember transitionTo route model hook not called未调用 Ember transitionTo 路由模型钩子
【发布时间】:2016-03-09 09:39:39
【问题描述】:

我在 Ember 应用(Ember 2)中定义了嵌套路由,如下所示;

this.route('main', function() {
  this.route('step1', function(){
        this.route('step1A');       
  });
});

现在我想导航到子路线并想触发“模型”钩子 所以我有

var routeName = 'main.step1.step1A';
self.transitionTo(routeName); //Tried Option1
self.get('controller').transitionToRoute(routeName); //Tried Option2

我的问题是,当我看到 URL 更改时,“模型”挂钩没有被触发。

如何强制触发“模型”挂钩?

根据文档,我认为该规则适用于具有动态段的路线。但我的路线很简单。

【问题讨论】:

  • 我知道这不是最好的答案,但是如果您将模型加载到 setupController() 会怎样?它始终运行,只要您可以先不显示数据并稍后更新模板,这可能是一种选择。
  • 嗯...由于一些奇怪的原因,甚至 setupController 挂钩也没有被执行!
  • 如果您使用参数(普通参数,如字符串,而不是对象)转换到路由“workflow.step1.step1A”会强制 ember 命中model() 钩子怎么办?当然,您不必使用它。
  • 没有setupContoller() 被解雇的问题可能是Ember 为你生成它,如果你没有它。你有 workflow.step1.step1A 控制器吗?
  • 我确实有那个控制器,也尝试过手动传递字符串'workflow.step1.step1A'

标签: javascript ember.js


【解决方案1】:

我今天偶然发现了同样的问题。我想出了以下解决方法

this.transitionTo('main.step1.step1A');
this.get('router._routerMicrolib.currentHandlerInfos').findBy('name', 'main.step1.step1A').handler.refresh();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多