【发布时间】:2013-07-03 19:12:18
【问题描述】:
这是我的路由器配置:
router.useConvention();
router.mapRoute('error', 'viewmodels/error', "Error");
router.mapNav('home');
router.mapRoute('api', 'viewmodels/api', 'API Reference');
router.mapRoute('set/:id', 'viewmodels/set', 'Set');
router.mapRoute('folder/:id', 'viewmodels/folder', 'Folder');
router.handleInvalidRoute = function (route, params) {
//debugger;
router.navigateTo('#/error');
};
logger.log('app has loaded :)', null, null, false);
return router.activate('home');
我可以找到 /api 和其他页面,但是当我输入无效路由时,chrome 控制台会显示以下内容:
和其他页面一样,我有 error.js 和 error.html。它在 App/viewmodels/error.js 中,但我不必指定包含任何其他视图/vms 的文件夹...为什么找不到它?
编辑 根据约瑟夫的建议,我激活了“错误”,我得到了这个:
我很困惑......为什么它已经在正确的位置找到了error.js,为什么它认为它会在那个位置找到一个html文档?
我有一个常规的文件结构:
【问题讨论】:
-
您发布的代码适用于 Durandal Starter Kit 中的新项目。有没有其他地方操纵路由器?
-
只是为了确保我搜索了整个解决方案并且我没有对路由器进行任何其他调用...我不知道是什么原因造成的:/
-
有很强的线索表明该路线看起来不错(您没有收到“找不到路线”错误),但解析的路径不正确。根据我的经验,这通常是路由器或 require.config 的错误配置。您可能想尝试拨打
router.activate('error');而不是 home,只是为了收集有关发生情况的数据点。如果它在那里爆炸,您可以单步执行 router.js 代码以查看差异发生在哪里。 -
@JosephGabriel 谢谢 - 我刚刚根据您的建议更新了我的帖子。
-
你的 app.SetRoot 设置是什么?
标签: single-page-application durandal