Javascript 如何使用Durandal';创建儿童路由器
在我的基于热毛巾的(MVC4 SPA)项目中,我一整天都在努力想如何正确地使用Durandal创建一个儿童路由器。这就是我目前的情况: shell.js inventory.js 我目前面临的问题是:Javascript 如何使用Durandal';创建儿童路由器,javascript,asp.net-mvc-4,durandal,hottowel,Javascript,Asp.net Mvc 4,Durandal,Hottowel,在我的基于热毛巾的(MVC4 SPA)项目中,我一整天都在努力想如何正确地使用Durandal创建一个儿童路由器。这就是我目前的情况: shell.js inventory.js 我目前面临的问题是: 当我点击库存视图时,它会被激活两次 虽然右上角出现了一些空的三维圆角矩形,但没有更多的导航选项可见。。。我不确定这是一个没有消失的进度条还是某个导航元素失败了 我的项目文件的组织方式如下: 我的主要问题是,我希望在视图或viewmodel中没有实现子导航的情况下显示子导航菜单。我不知道子导航不是现
我的主要问题是,我希望在视图或viewmodel中没有实现子导航的情况下显示子导航菜单。我不知道子导航不是现有导航的固有特性。以下是我必须做出的改变 通过在
router.navigationModel
上添加带有数据绑定的元素,将my inventory.html文件更改为充当子导航容器,该元素将拾取并显示子导航菜单;还包括路由器上带有数据绑定
的元素,该元素将在最低导航级别拾取叶节点(页面内容):
<section>
<header>
<h2 class="page-title" data-bind="text: title"></h2>
<nav class="pull-left">
<ul class="nav nav-pills nav-stacked" data-bind="foreach: router.navigationModel()">
<li><a data-bind=" css: { active: isActive }, attr: { href: hash }, text: title"
href="#"></a></li>
</ul>
</nav>
</header>
<section id="inventoryPane" data-bind="router: { transition: 'entrance', cacheViews: true }"></section>
</section>
接下来,我似乎必须更新根级路由上的哈希,以避免出现“*inventory”路由找不到的错误。我不知道为什么splat路线不能更好地自动为我处理;不知何故,淘汰样本绕过了这个问题,但我无法不重写哈希:
var routes = [
{ route: '', moduleId: 'home', title: 'Home', nav: 1 },
{ route: 'inventory*inventory', moduleId: 'inventory', title: 'Inventory', hash:"#inventory", nav: 2 }];
最后,我必须重新构建我的目录树,将库存文件上移一级:
我的主要问题是,我希望在视图或viewmodel中没有实现子导航的情况下显示子导航菜单。我不知道子导航不是现有导航的固有特性。以下是我必须做出的改变
通过在router.navigationModel
上添加带有数据绑定的元素,将my inventory.html文件更改为充当子导航容器,该元素将拾取并显示子导航菜单;还包括路由器上带有数据绑定
的元素,该元素将在最低导航级别拾取叶节点(页面内容):
<section>
<header>
<h2 class="page-title" data-bind="text: title"></h2>
<nav class="pull-left">
<ul class="nav nav-pills nav-stacked" data-bind="foreach: router.navigationModel()">
<li><a data-bind=" css: { active: isActive }, attr: { href: hash }, text: title"
href="#"></a></li>
</ul>
</nav>
</header>
<section id="inventoryPane" data-bind="router: { transition: 'entrance', cacheViews: true }"></section>
</section>
接下来,我似乎必须更新根级路由上的哈希,以避免出现“*inventory”路由找不到的错误。我不知道为什么splat路线不能更好地自动为我处理;不知何故,淘汰样本绕过了这个问题,但我无法不重写哈希:
var routes = [
{ route: '', moduleId: 'home', title: 'Home', nav: 1 },
{ route: 'inventory*inventory', moduleId: 'inventory', title: 'Inventory', hash:"#inventory", nav: 2 }];
最后,我必须重新构建我的目录树,将库存文件上移一级:
检查将shell.js中的显式路由库存/索引
更改为splat路由库存/索引/*是否会有所不同。请参阅@raineraspirit,它消除了对详细信息视图的额外激活,但控制台日志随后会报告“log:Route'*未找到任何内容”(我将错误报告代码更改为system.log('Route\''+coreFragment+'\'未找到”);
因此我对发生的情况有所了解)。仅供参考,3d矩形是您删除字体的地方,但不是显示shell中导航更改的微调器对象。如果将显式路由库存/索引
更改为splat路由库存/索引/*shell.js中的任何内容都会产生影响,请检查。请参阅@raineraspirit,它消除了对详细信息视图的额外激活,但控制台日志随后会报告“log:Route'*未找到任何内容”(我将错误报告代码更改为system.log('Route\''+coreFragment+'\'未找到”);
因此我对发生的情况有所了解)。仅供参考,3d矩形是您删除字体的地方,但不是显示shell中导航更改的微调器对象
var routes = [
{ route: '', moduleId: 'home', title: 'Home', nav: 1 },
{ route: 'inventory*inventory', moduleId: 'inventory', title: 'Inventory', hash:"#inventory", nav: 2 }];