Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ember.js:如果目标匹配当前路径,如何中止转换_Ember.js_Transitions_Ember Router - Fatal编程技术网

ember.js:如果目标匹配当前路径,如何中止转换

ember.js:如果目标匹配当前路径,如何中止转换,ember.js,transitions,ember-router,Ember.js,Transitions,Ember Router,如果目标(包括动态ID)与当前路由匹配,是否有一般方法(即在应用程序路由器中)中止转换 我尝试连接到willTransition,但我找到的transition.params似乎包含当前ID,我没有任何可与之比较的内容。我刚刚在我的应用程序中测试了此功能,我认为它符合您的要求。基本上,您可以根据控制器的model.id测试参数中的job\u id App.JobRoute = Ember.Route.extend({ actions: { willTransition: funct

如果目标(包括动态ID)与当前路由匹配,是否有一般方法(即在应用程序路由器中)中止转换


我尝试连接到willTransition,但我找到的transition.params似乎包含当前ID,我没有任何可与之比较的内容。

我刚刚在我的应用程序中测试了此功能,我认为它符合您的要求。基本上,您可以根据控制器的
model.id
测试参数中的
job\u id

App.JobRoute = Ember.Route.extend({

  actions: {
    willTransition: function(transition) {
      if (this.controller.get('model.id') == transition.params.job_id) {
        transition.abort();
      }
    }
  }

});

转换的
params
属性将引用当前路由的参数,而不是目标。您需要的是查看通过其
providedModels
属性提供给转换的模型。您的代码应该如下所示:

willTransition: function(transition) {
  if ((this.get('routeName') === transition.targetName) &&
      (this.get('currentModel') === transition.providedModels[transition.targetName])) {
    transition.abort();
    return;
  }

  // ... other code here ...
}

只是好奇一下,为什么需要这个?@mavilein:我的页面上有一些状态,导致css动画等等。由于此应用程序的性质,用户将调用他们实际所在的URL-因此,通过中止,我希望避免重置动画状态。Yep,这是我尝试的,但(至少在我的环境中)转换的参数哈希包含我当前所在的id集,而不是转换所指向的id集。我将重新检查以确保这不是由我的设置引起的。我只是重新检查了一下,并在
willTransition
的参数中获得了新信息(我要转换到的位置)。感谢您的努力!如果我找到我的情妇的原因,我会评论的。没问题。祝你好运