【问题标题】:Turn off history for Durandal child router关闭 Durandal 子路由器的历史记录
【发布时间】:2014-12-01 18:51:29
【问题描述】:

我正在使用Durandal 中的子路由器进行选项卡控制。

但是,每当您更改选项卡时,它都会创建一个历史事件。一次又一次。它使我的“关闭”按钮变得毫无意义,因为我不能 router.navigateBack() 了(需要多次)。

有没有办法在当前父路由之外导航,或者让子路由器不创建历史记录?

var childRouter = m_router
    .createChildRouter()
    .makeRelative({ moduleId: 'viewmodels/manage/bill/center', fromParent: true })
    .map([
        { route: ['contract', ''], moduleId: 'contract', title: 'Contracts', nav: true },
        { route: 'job', moduleId: 'job', title: 'Jobs', nav: true },
        { route: 'order', moduleId: 'order', title: 'Orders', nav: true }
    ]).buildNavigationModel();

谢谢。

【问题讨论】:

    标签: javascript durandal durandal-2.0


    【解决方案1】:

    听起来你想要做的只是不进入历史。你可以这样做 -

    router.navigate('your/hash/here', { replace: true, trigger: false });
    

    当您的子路由器进行路由更改时。

    http://durandaljs.com/documentation/Using-The-Router.html#triggering-navigation

    【讨论】:

    • 这是为了触发手动导航。但是,如果用户单击带有组成选项卡的哈希的<a> 链接,它将创建历史记录。
    • 只需将锚映射到函数即可。
    • 我承认这可行,但我想避免一直将锚绑定到函数。
    • 您可以观看 activeInstruction 并将其清除,但这似乎比将锚点绑定到函数更糟糕 :)
    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 2014-02-05
    • 2022-07-25
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    相关资源
    最近更新 更多