我在shell.js中配置了settings
splat路由:
router.map([
{ route: 'settings*child', moduleId: 'views/settings/main', nav: true }
]).buildNavigationModel();
在views/settings/main.js
文件中,我创建了子路由器:
var childRouter = router.createChildRouter().makeRelative({
moduleId: 'views/settings',
fromParent: true
}).map([
{ route: 'users', moduleId: 'child/users/list', nav: true },
{ route: 'users/:id', moduleId: 'child/users/view', nav: false },
]).buildNavigationModel();
文件夹结构如下所示:
/views
-/settings
--settings.js
--settings.html
--/child
---/users
----list.js
----list.html
----view.js
----view.html
我遇到的问题是:
当我尝试从另一个父路由页面导航到设置(#settings)页面时,它将在控制台中显示一条错误消息:
Route Not Found settings undefined
但设置页面仍显示我已创建的所有子路由器列表。
接下来,我尝试导航到#settings/users
和#settings/users/{id}
,它可以正常工作,没有任何问题或错误,尽管从另一个父页面尝试它。
我认为问题是splat路径总是被预期会出现在哈希之前的#settings/users
之类的东西,并且不会接受#settings
没有孩子?
或者我在实施时遗漏了什么?
任何帮助或建议都将不胜感激! 谢谢!
答案 0 :(得分:0)
我有一个非常相似的设置,我在子路由器上创建一个路由来表示这样的空白路径:
var childRouter = router.createChildRouter().makeRelative({
moduleId: 'views/settings',
fromParent: true
}).map([
{ route: '', moduleId: 'main', nav: true },
{ route: 'users', moduleId: 'child/users/list', nav: true },
{ route: 'users/:id', moduleId: 'child/users/view', nav: false },
]).buildNavigationModel();