我正嘗試遷移到Ember中的新路由器。用例如下:用戶未登錄但請求需要登錄的URL。他被重定向到登錄路徑,成功登錄後,他被重定向到他的原始目的地。如何在Ember的v2路由器中存儲路徑和轉換?
我通過覆蓋Router.route(路徑)和攔截路徑請求,當應用程序處於未授權狀態時,通過以前的路由器實現了此目的。
新的路由器沒有route()函數,我也不知道如何覆蓋它,現在路由器實例是由Ember自動創建的。無論如何,我可能不應該那樣做。
有一個看起來很有用的Route.redirect()鉤子。但是,Route不再在v2路由器中擴展Path,所以沒有Root.path,並且沒有路徑信息被傳入Route.redirect(),所以我不知道如何保存調用transitionTo()的路徑信息,後來。
我在下面提供了我的一般方法。我怎麼能做到這一點?它對於許多應用程序來說似乎是一個非常常見的用例。
// i imagine something like this should happen
App.AuthRequiredRoute = Ember.Route.extend({
redirect: function() {
if(!App.controllerFor('login').get('isLoggedIn')) {
var pathToSave = ????
App.controllerFor('login').set('pathAfterLogin',pathToSave);
this.transitionTo('login');
}
}
}
// and then after login, the LoginController would call App.router.transitionTo(this.pathAfterLogin)
我應該補充說,在回答這個問題時,請記住動態段也需要支持。 – inconduit
我正在嘗試使用與您一樣的新路由器進行與身份驗證相關的工作。我沒有你的答案,對不起:(但是,也許你會有一個對我來說呢?)http://stackoverflow.com/questions/14185040/how-to-re-render-application-template-with -new路由器 – Victor