Javascript Durandal子视图未添加到历史记录中,并且在使用浏览器时被忽略';s后退按钮
在我正在开发的Durandal应用程序中,有一个顶部带有选项卡的页面,可以将用户带入子视图。这些选项卡工作正常,配置如下:Javascript Durandal子视图未添加到历史记录中,并且在使用浏览器时被忽略';s后退按钮,javascript,durandal,browser-history,durandal-navigation,Javascript,Durandal,Browser History,Durandal Navigation,在我正在开发的Durandal应用程序中,有一个顶部带有选项卡的页面,可以将用户带入子视图。这些选项卡工作正常,配置如下: var childRouter = router.createChildRouter() .makeRelative({ moduleId: 'viewmodels/admin/sections', fromParent: true }) .map([ { route: [''], moduleId: 'index', title: 'Adm
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按预期更新。从默认的管理子视图(../#admin
)转到设置选项卡将把URL更新为../#admin/Settings
。但是问题是,尽管指定了replace:true
,视图更改似乎并未存储在浏览器历史记录中
如果我在#admin
页面上打开一个新的浏览器选项卡,并导航到#admin/settings
页面,浏览器似乎认为在此之前唯一的历史记录条目是打开新选项卡:
如果我从#admin
部分完全离开,我使用的最后一个选项卡似乎会在浏览器历史记录中被记住(在本例中,我使用的是设置选项卡),但事先访问的主#admin
页面没有条目:
如果我从#admin
转到#admin/settings
,然后返回到#admin
,我将在历史记录中只看到对主管理页面的引用,而不会看到设置页面
有人知道我错过了什么,阻止了历史记录在每次子视图更改时更新吗?我发现将
.mapunnownRoutes()
保留为空而不是定义要映射的页面可以完全解决问题
我是这样做的:
.mapUnknownRoutes('not-found', 'not-allowed')
.mapUnknownRoutes()
现在我要做的是:
.mapUnknownRoutes('not-found', 'not-allowed')
.mapUnknownRoutes()
似乎没有任何东西出现故障(仍然可以访问
'not-found'
和'not-allowed'
页面),但现在后退按钮按预期工作。我发现将.mapunnownRoutes()
留空而不是定义要映射的页面完全可以解决问题
我是这样做的:
.mapUnknownRoutes('not-found', 'not-allowed')
.mapUnknownRoutes()
现在我要做的是:
.mapUnknownRoutes('not-found', 'not-allowed')
.mapUnknownRoutes()
似乎没有任何东西损坏(仍然可以访问'not-found'
和'not-allowed'
页面),但现在后退按钮按预期工作