gpt4 book ai didi

asp.net-mvc-4 - Durandal.js : change navigation options per area

转载 作者:行者123 更新时间:2023-12-04 17:10:37 28 4
gpt4 key购买 nike

我希望我的 durandal 应用程序的每个“区域”都有不同的导航。我在使用区域时通过 ASP.NET MVC 实现了这一点,方法是在布局页面中定义导航部分,并具有为每个区域实现导航的嵌套布局页面。 durandal中的 View 结构如下:

http://i1346.photobucket.com/albums/p697/user2269352/viewstructure_zps5e21e724.gif

我正在使用 ASP.NET MVC4 durandal 模板,我猜我可能需要更改 shell.html 中的以下部分

<ul class="nav" data-bind="foreach: router.visibleRoutes">
<li data-bind="css: { active: isActive }">
<a data-bind="attr: { href: hash }, html: name"></a>
</li>
</ul>

我想理想情况下我希望有单独的 html 页面可以根据我正在查看的区域/页面加载到此部分。

最佳答案

您可以通过向路线信息添加设置对象并在其中指定区域名称来实现此目的。有了它,针对路由器的visibleRoutes 集合创建一个计算的observable,该集合仅选择当前区域的路由。

不确定您的路由配置是什么样的,但添加设置的示例如下所示:

var routes = [
{ url: 'one/page1', moduleId: 'viewmodels/one/page1', name: 'Page 1', visible: true, settings: {area: 'one'} },
{ url: 'two/page1', moduleId: 'viewmodels/two/page1', name: 'Page 1', visible: true, settings: {area: 'two'} }
];
router.map(routes);

在您控制导航 html 的 View 模型中:
//filter the visible routes for the current area
viewModel.areaRoutes = ko.computed(function () {
var area = this.area;
return ko.utils.arrayFilter(router.visibleRoutes(), function (route) {
return route.settings.area === area;
});
}, viewModel);

关于asp.net-mvc-4 - Durandal.js : change navigation options per area,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16031226/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com