1

settings在 shell.js 中配置了 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/usersand#settings/users/{id}并且它可以正常工作,即使从另一个父页面尝试它也是如此。

我认为问题是 splat route 总是期望在散列前面有类似的东西,没有孩子#settings/users不会接受?#settings

或者我在执行过程中遗漏了一些东西?

任何帮助或建议将不胜感激!
谢谢!

4

1 回答 1

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();
于 2015-06-22T14:50:29.490 回答