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

时间:2016-09-16 16:17:58

标签: 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);
    }
  }
});

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

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

更新以便更好地了解问题

例如我有路线:

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

当用户请求URI例如en/login ember load not-found路由时(默认为通配符)。实际路径为login

我想删除en并尝试找出我的应用程序中是否存在login路由,否则它将是真实的" not-found"页

en/login == login且有效,将重定向到登录

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

2 个答案:

答案 0 :(得分:3)

您可以这样做:

getOwner(this).lookup(`route:${routeName}`);

从容器(路由,控制器,组件,服务)创建的任何对象中

测试routeName是否为有效路由。如果是这样,您将返回一个Route对象,否则,您将得到undefined(因此您可以检查真实性)。

答案 1 :(得分:-2)

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

var recognizer = this.get('router.router.recognizer');
recognizer.recognize(currentPath);