2016-09-16 45 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

相關問題