如何在转换之前知道路线是否存在

use*_*168 5 ember.js

我想在我的应用程序路由中找不到路由时重新转换我的应用程序

export default Ember.Route.extend({
  redirect: function(model, transition) {
    if (transition.targetName == "not-found") {
      var newPath = transition.intent.url  //do some logic
      this.transitionTo(newpath);
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

问题newPath如何在执行之前检查是否存在this.transitionTo(newPath);

在API中我发现只有私有的hasRoute

更新以更好地理解问题

例如我有路线:

Router.map(function() {
  this.route('login'),
  this.route('not-found', { path: '/*wildcard' });
});
Run Code Online (Sandbox Code Playgroud)

当用户请求URI例如en/loginember 加载not-found路由时(默认为通配符)。真实路径是login.

我想删除en并尝试找出login我的应用程序中是否存在路由,否则它将是真正的“未找到”页面

en/login==login并且它是有效的,将重定向到登录

en/abc==abc该路由不存在,not-found继续执行

use*_*168 -2

这帮助我找到匹配路线的序列

var recognizer = this.get('router.router.recognizer');
recognizer.recognize(currentPath);
Run Code Online (Sandbox Code Playgroud)