2014-01-29 48 views
0

活動路線哈希我有兩條路線有不同的散列和同一視圖模型:獲取激活方法

var routes = [ 
    { route: '', moduleId: 'home', title: 'Home', nav: 1 }, 
    { route: 'details(/:id)', moduleId: 'details', title: 'Details', nav: 2, hash: '#details' }, 
    { route: 'access_token=*token', moduleId: 'details', title: 'Details', nav: false, hash: "#access_token=" }]; 

我怎麼可以檢測我來詳細信息的方式查看詳情activate方法模型查看模式?我嘗試遍歷router.routes數組,並使用isActive()== true查找路由,但直到activate方法返回結果才能使用。

另外,如果我添加有效路線的檢測到視圖模型的binding方法,我得到兩種途徑活性,無論哪個應用路線:

function binding() { 

    router.routes.forEach(function (route) { 
     console.log('Route ' + route.hash + " isActive:" + route.isActive()); 
    }); 
} 

控制檯日誌:

Route # isActive:false details.js:37 
Route #details isActive:true details.js:37 
Route #access_token= isActive:true 
+1

爲了說明您正在嘗試查找以前的路線或您正在導航的路線?你看過activeInstruction嗎? –

+0

@PWKad非常感謝!這正是我尋找的。 –

回答

3

看看路由器的activeInstruction屬性 -

router.activeInstruction(); 

您可以訂閱它或者創建一個計算它來跟蹤路線中的變化。

+0

更具體地說,'router.activeInstruction()。fragment'將爲您提供完整的durandal路由。 – SFlagg