【问题标题】:Submenu with durandal带杜兰达尔的子菜单
【发布时间】:2013-10-21 00:00:01
【问题描述】:

请帮助我有一个看起来像这样的 splat 路线。

管理员*详细信息

我从这样的管理链接创建了一个子路由器。

var childRouter = router.createChildRouter().makeRelative({ moduleId: 'admin', route:'admin'})
    .map([
           {
            title: 'Case Files',
            route: 'default/index',
            moduleId: 'default/index',
            nav: true
           }
         ])
    .buildNavigationModel();


    var vm = {
        router: childRouter,
        activate: activate
    };

我的文件夹结构是这样的。

viewmodels\admin\admin
viewmodels\admin\default\index

为什么它没有导航到索引页面?
相反,我收到了 Failed to load routed module 错误

【问题讨论】:

    标签: knockout.js durandal


    【解决方案1】:

    每当我创建子路由器时,我总是使用fromParent : true。此外,moduleId 是从父路由器的根目录中获取的,所以你可能会发现这样的东西可以工作

    var childRouter = router.createChildRouter()
        .makeRelative({ moduleId: 'viewmodels/admin', fromParent: true})
        .map([{
            title: 'Case Files',
            route: 'default/index',
            moduleId: 'default/index',
            nav: true
           }])
        .buildNavigationModel();
    

    【讨论】:

      【解决方案2】:

      我认为您在这里有一个非常简单的错误。创建子路由器时,您需要提供默认路由以及您提供的路由。我说的不是很好,但在这里:

      var childRouter = router.createChildRouter()
      .makeRelative({ moduleId: 'admin', route:'admin'})
      .map([
             {
              title: 'Case Files',
              route: ['', 'default/index'],
              moduleId: 'default/index',
              nav: true
             }
           ])
      .buildNavigationModel();
      
      
      var vm = {
          router: childRouter,
          activate: activate
      };
      

      你也可以这样做:

      var childRouter = router.createChildRouter()
      .makeRelative({ moduleId: 'admin', route:'admin'})
      .map([
             {
              title:'Case Files',
              route: '',
              moduleId: 'default/index',
              nav: true
             },
             {
              title: 'Case Files',
              route: 'default/index',
              moduleId: 'default/index',
              nav: true
             }
           ])
      .buildNavigationModel();
      
      
      var vm = {
          router: childRouter,
          activate: activate
      };
      

      似乎因为您没有初始默认子路由,因此尝试转到 /admin 没有定义的路由,它需要 /admin/default/index。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2013-10-19
        • 2013-08-31
        • 1970-01-01
        • 2014-03-19
        • 2013-04-22
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        • 2013-11-16
        相关资源
        最近更新 更多