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 查找路由,但这在激活方法返回结果之前不可用。

另外,如果我在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 
4

1 回答 1

4

看看路由器的 activeInstruction 属性——

router.activeInstruction();

您可以订阅它或根据它创建一个计算来跟踪路线的变化。

于 2014-01-29T21:05:29.437 回答