在我的项目中,我有一个登录屏幕,然后是几个导航页面和注销。一旦我注销并尝试再次登录,我收到一个错误:未捕获的错误:历史记录已被激活。Durandal-未捕获错误:历史记录已被激活
我应该如何关闭每次登出时的历史记录?
我已经在所有页面中添加了停用方法,并且已经将视图视图模型设置为null。注销时需要注意什么?任何代码示例都会有所帮助。
在main.js我有以下代码:
define(['durandal/system', 'durandal/app', 'durandal/viewLocator', 'plugins/router'],
function (system, app, viewLocator, router) {
system.debug(true);
app.configurePlugins({
router: true
});
app.start().then(function() {
viewLocator.useConvention();
app.setRoot('viewmodels/login');
system.log('Main Module started');
});
});
成功登录后,我设置的应用程序根壳。 shell.js中的代码如下:
define(['plugins/router', 'durandal/system', 'durandal/app'], function (router, system, app) {
return {
title: 'Configuration',
router: router,
activate: function() {
system.log('Configuring routes');
router.map([
{
route: '', moduleId: 'viewmodels/home', nav: true,
title: 'Home'
},
{
route: 'a1', moduleId: 'viewmodels/a1', nav: true,
title: 'A1'
},
{
route: 'a2', moduleId: 'viewmodels/a2', nav: true,
title: 'a2'
}
]).buildNavigationModel();
system.log('Shell view activating');
return router.activate();
},
logout: function() {
app.setRoot('viewmodels/login');
},
deactivate: function() {
router.deactivate();
router = null;
console.log("shell js- deactivate.. ");
},
}
});
在方法禁用 - 我将路由器设置为空。
应该做些什么来解决这个问题?
谢谢。
只是想知道,为什么你需要停用路由器,而其他?就我个人而言,我从来没有这样做,文档没有提到在路由器部分停用。查看代码,在'rootRouter.deactivate'函数中出现以下注释:'禁用历史记录,可能是暂时的。在真实应用程序中没有用处,但对单元测试路由器可能有用。' –
考虑在注销时使用'window.location.reload()'。这将从头开始SPA。 – RainerAtSpirit