如何在durandal中使用具有相同模块ID的路由时强制激活?

时间:2015-07-24 01:23:41

标签: javascript durandal durandal-2.0

这就是我构建路线的方式

[{
        route: 'Phone/:isWidget',
        moduleId: 'commonLog',
        title: 'phoneTitle',
        nav: true,
        hash: '#Phone',
        settings: { Communication: true }
},
{
        route: 'Letters/:isWidget',
        moduleId: 'commonLog',
        title: 'lettertitle',
        nav: true,
        hash: '#Letters',
        settings: { Communication: true }
}]

我需要做的是强制激活方法在我们之间路由时触发。

为什么我需要它?

在activate方法中,我拉动activeInstruction并获取路径信息,并根据我改变我的observable并调用不同的api来获取正确的数据,并为我的表生成正确的列。

1 个答案:

答案 0 :(得分:1)

commonLog模块中,您需要设置canReuseForRoute属性,该属性是返回false的函数。如果你的模块是单身:

return {
    // ...
    canReuseForRoute: function () {
        return false;
    },
    // ...
}

如果你的模块是构造函数:

return function () {
    // ...
    this.canReuseForRoute = function () {
        return false;
    };
    // ...
};

然后每次都会调用activate方法。

文档链接:http://durandaljs.com/documentation/Using-The-Router.html - 请参阅"模块重用"。