2016-09-16 26 views
3

我想重新转换我的应用程序时,未发现路线,在我的应用途径如何知道我是否做之前就存在的路线转变

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

UPDATE更好地理解问题

例如我有路线:

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

当例如en/login余烬负载not-found路由用户请求URI(默认为通配符)。真正的路径是login

我想删除en并试图找出是否login路线在我的应用程序存在,否则这将是真正的“未找到”

en/login == login和它是有效的,会重定向到登录

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

+0

我假设你的意思是'Ember.Router'的'hasRoute'。还有(也仍然是私人的,但根据代码评论希望有时会公开)[路由服务](http://emberjs.com/api/classes/RoutingService.html)([source](https://github.com) /emberjs/ember.js/blob/v2.8.0/packages/ember-routing/lib/services/routing.js)),你可以用Ember.inject.service(' - routing')注入任何地方' – Thernys

+1

为什么? Ember建议将路由名称传递给transitionTo,而不是url。这条路线怎么可能不存在?请解释你试图达到什么目的。 –

回答

-2

这帮助我找到匹配的路由的顺序

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

不起作用。希望能有更详细的例子。 – remino

+0

您收到了什么错误? – user1156168

相关问题