【问题标题】:Splat Route Not Found (DurandalJS)未找到 Splat 路线 (DurandalJS)
【发布时间】:2015-06-22 22:50:29
【问题描述】:

我在 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 route 总是期望在哈希前面有一些东西,比如 #settings/users 并且它不会在没有孩子的情况下接受 #settings 吗?

或者我在执行过程中遗漏了什么?

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

【问题讨论】:

    标签: durandal durandal-2.0 durandal-navigation


    【解决方案1】:

    我有一个非常相似的设置,我在子路由器上创建一个路由来表示这样的空白路由:

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

    【讨论】:

    • 嗨@patel,很遗憾我现在还没有机会测试你的建议。但我相信这就是答案。我错过了创建空白路线 { route: '', moduleId: 'main', nav: true },谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 2013-04-07
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多