我希望在我的应用程序路径中找不到路由时重新转换我的应用程序
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
继续执行
答案 0 :(得分:3)
您可以这样做:
getOwner(this).lookup(`route:${routeName}`);
测试routeName
是否为有效路由。如果是这样,您将返回一个Route
对象,否则,您将得到undefined
(因此您可以检查真实性)。
答案 1 :(得分:-2)
这有助于我找到匹配路线的序列
var recognizer = this.get('router.router.recognizer');
recognizer.recognize(currentPath);