0

这是我的 shell.js 虚拟机:

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;
});

当我导航到无效路由(例如 / 文件夹)时,我的 handleInvalidRoute 块中的调试器没有被命中,并且我从 require.js 中得到一个脚本错误:

GET 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

这就是我所要做的。知道发生了什么吗?

4

1 回答 1

1

这已由 Durandal 新闻组https://groups.google.com/forum/#!topic/durandaljs/eZrIcgn3aU8中的@EisenbergEffect 回答。

这是因为您调用了 mapAuto,它总是尝试将 url 映射到模块,无论它们是否实际存在。实际上,handleInvalidRoute 永远不会被调用。

于 2013-05-29T06:35:15.820 回答