这是我的shell.js vm:
var vm = {
router: router,
auth: auth,
viewAttached: function () {
},
activate: function () {
router.useConvention();
router.handleInvalidRoute = function (route, params) {
debugger;
toastr.info('No Route Found: ' + route);
};
router.map([
{ url: 'error', moduleId: 'viewmodels/error', name: 'Error', visible: false }
]);
router.mapAuto();
if (auth.isAuthenticated)
//return router.activate('folder/2');
return router.activate('home');
else {
return router.activate('home');
}
}
};
return vm;
});
当我导航到无效路由(例如/ files)时,我的handleInvalidRoute块中的调试器没有被命中,我从require.js得到了一个scripterror:
获取http://appname.com/App/viewmodels/folders.js 404(未找到) require.js:33未捕获错误:脚本错误 http://requirejs.org/docs/errors.html#scripterror require.js:8 J. require.js:8 j.onScriptError
这就是我必须要做的一切。知道发生了什么事吗?
答案 0 :(得分:1)
@ EisenbergEffect在Durandal新闻组https://groups.google.com/forum/#!topic/durandaljs/eZrIcgn3aU8中回答了这个问题。
这是因为您调用了mapAuto,它始终尝试将URL映射到 模块,无论它们是否确实存在。有效, 永远不会调用handleInvalidRoute。