在activate方法中获取活动路由哈希

时间:2014-01-29 12:57:56

标签: javascript durandal durandal-2.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 个答案:

答案 0 :(得分:4)

查看路由器的activeInstruction属性 -

router.activeInstruction();

您可以订阅它或创建计算结果以跟踪路线中的变化。