javascript - 在 activate 方法中获取事件路由哈希

标签 javascript durandal durandal-2.0

我有两条具有不同哈希值和相同 View 模型的路由:

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=" }];

如何在详细信息 View 模型的 activate 方法中检测进入详细信息 View 模型的方式?我尝试迭代 router.routes 数组并查找 isActive() == true 的路由,但这在 activate 方法返回结果之前不可用。

此外,如果我将事件路由的检测添加到 View 模型的绑定(bind)方法中,则无论应用哪条路由,我都会使两条路由都处于事件状态:

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 

最佳答案

看一下路由器的 activeInstruction 属性 -

router.activeInstruction();

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

关于javascript - 在 activate 方法中获取事件路由哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21431830/

相关文章:

php - jQuery 将变量从 PHP 传递到 MySQL

javascript - Durandal SPA 与 typescript 有关的问题

html - 如何将 "Skip navigation"与 Durandal 路由器一起使用

asp.net-mvc - MVC bundle - 无法加载资源

javascript - durandaljs 或 knockoutjs 中的自动调用功能

javascript - 如何使用 IE11 中的虚拟滚动转到 Kendo UI 中的最后一个位置

javascript - 在运行时在 mvc 中将 css 类应用于菜单项

javascript - 客户端分页

javascript - Durandal Weyland 优化无法处理 require 函数

c# - 向 breeze-saving-server 函数发送附加参数