Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Durandal子视图未添加到历史记录中,并且在使用浏览器时被忽略';s后退按钮_Javascript_Durandal_Browser History_Durandal Navigation - Fatal编程技术网

Javascript Durandal子视图未添加到历史记录中,并且在使用浏览器时被忽略';s后退按钮

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

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

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'
页面),但现在后退按钮按预期工作