2
在我基於HotTowel的項目中,我使用Durandal 1.1.1進行路由。Durandal中的條件路由
我有一個登錄路線,我想激活,如果用戶沒有登錄
我的路線的配置是這樣的:。
var routes = [ {
url: 'login',
moduleId: 'viewmodels/login',
name: 'Login',
visible: true,
caption: 'Login'
},{
url: 'moduledetail/:id',
moduleId: 'viewmodels/moduledetail',
name: 'ModuleDetail',
visible: true,
caption: 'ModuleDetail'
}
我想,如果用戶想要去#/moduledetail/1
,是尚未驗證,瀏覽器導航到路由#/login/moduledetail/1
,以便成功登錄路由後返回到#/moduledetail/1
。
一個可能的解決方案是把一個navigateTo
在canActivate
的moduledetail
像:
function canActivate()
{
if (!loggedIn)
router.navigateTo(`#/login/moduledetail/1`)
return false;
}
但在canActivate
導航到另一個頁面看起來很愚蠢。
有沒有什麼方法告訴Durandal路由時,在這種情況下使用這條路由?
感謝您的回答。我不知道'guardRoute'加入了durandal 2.0。但是我的問題仍然存在,因爲它不適用於durandal 1.x,並且由於項目檢查點,我目前無法升級到2.0。 – mehrandvd
「從我讀過的內容來看,雖然沒有文檔,但Durandal 1.x中的行爲同樣如此。」 –
但是我沒有在Duranda 1.x中找到任何名爲'guradRoute'的函數! – mehrandvd