gpt4 book ai didi

javascript - Durandal subview 不会添加到历史记录中,并且在使用浏览器的后退按钮时被忽略

转载 作者:行者123 更新时间:2023-11-28 06:29:15 27 4
gpt4 key购买 nike

在我正在开发的 Durandal 应用程序中,有一个页面顶部带有选项卡,可将用户带入 subview 。这些选项卡工作完美,配置如下:

var childRouter = router.createChildRouter()
.makeRelative({ moduleId: 'viewmodels/admin/sections', fromParent: true })
.map([
{ route: [''], moduleId: 'index', title: 'Admin', nav: false },
{ route: 'settings', moduleId: 'settings', title: 'Settings', nav: true },
...
]).buildNavigationModel();

我还有一个导航函数,每次单击选项卡时都会执行,如下所示:

function navigate(route) {
router.navigate(route.hash, { replace: true, trigger: true });
}

页面的 URL 按预期更新。从默认的管理 subview (.../#admin) 转到“设置”选项卡会将 URL 更新为 .../#admin/settings。然而问题是,尽管指定了 replace: true ,但 View 更改似乎并未存储在浏览器历史记录中。

如果我在 #admin 页面上打开一个新的浏览器选项卡并导航到 #admin/settings 页面,浏览器似乎会认为在此之前的唯一历史记录条目是新标签页的打开:

Browser Lack of History

如果我完全离开 #admin 部分,我所在的最后一个选项卡似乎会在浏览器历史记录中被记住(在本例中,是我所在的“设置”选项卡),但之前访问过的主 #admin 页面没有任何条目:

Browser History, but not enough

如果我从#admin转到#admin/settings,然后返回#admin,我只会看到对历史记录中的主管理页面,没有提及设置页面。

有谁知道我错过了什么,导致每次 subview 更改时都无法更新历史记录?

最佳答案

我发现将 .mapUnknownRoutes() 留空而不是定义要映射的页面可以完全解决问题。

我正在这样做:

.mapUnknownRoutes('not-found', 'not-allowed')

现在我正在这样做:

.mapUnknownRoutes()

似乎没有任何问题('not-found''not-allowed' 页面仍然可以访问),但现在后退按钮可以按预期工作。

关于javascript - Durandal subview 不会添加到历史记录中,并且在使用浏览器的后退按钮时被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com