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是否存在.transitionTo(newPath);

在API我发现只有私有hasRoute

更新以更好地了解问题

例如我有路线:

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

当用户请求URI时,例如en / login ember加载not-found路由(默认为Wildcard).真实路径是登录.

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

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

en / abc == abc此路由不存在,未找到继续执行

最佳答案 你可以做:

getOwner(本).lookup(`路线:${routeName}`);

从容器(路由,控制器,组件,服务)创建的任何对象来测试routeName是否是有效路由.如果是,你将获得一个Route对象,如果没有,你将得到未定义(所以你可以检查真实性).

点赞