HandleInvalidRoute不与Durandal一起使用

时间:2013-05-27 21:13:16

标签: durandal

这是我的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

这就是我必须要做的一切。知道发生了什么事吗?

1 个答案:

答案 0 :(得分:1)

@ EisenbergEffect在Durandal新闻组https://groups.google.com/forum/#!topic/durandaljs/eZrIcgn3aU8中回答了这个问题。

  

这是因为您调用了mapAuto,它始终尝试将URL映射到   模块,无论它们是否确实存在。有效,   永远不会调用handleInvalidRoute。