在 Visual Studio 中使用 ASP.Net Durandal 模板。我在 main.js 中添加了以下内容:
router.mapNav('clients');
router.mapNav('client/:id');
然后这些链接都可以工作,但我不希望客户端在导航中可用,如果我删除该行,则链接不再有效。有没有一种简单的方法可以将其设置为不可见,或者我是否在错误的位置输入了路线?
在 Visual Studio 中使用 ASP.Net Durandal 模板。我在 main.js 中添加了以下内容:
router.mapNav('clients');
router.mapNav('client/:id');
然后这些链接都可以工作,但我不希望客户端在导航中可用,如果我删除该行,则链接不再有效。有没有一种简单的方法可以将其设置为不可见,或者我是否在错误的位置输入了路线?
如果您使用的是 Durandal 2.0,您可以为路由器导航指定更多选项,它看起来像这样:
//Durandal 2.0
router.map([
{ route: 'clients', title:'clients', moduleId: 'viewmodels/clients', nav: true},
{ route: 'client/:id', title:'client', moduleId: 'viewmodels/client', nav: false }
]).buildNavigationModel();
如果您使用的是 Durandal 1.x,我强烈建议您升级到 2.0。有多个错误修复以及一些重要的架构更改,从长远来看将使您的生活更轻松。
如果这不是一个选项,在 Durandal 1.x 中有一种方法可以防止路线出现在导航中:
//Durandal 1.x
router.mapRoute({ url: 'clients', name: 'clients', moduleId: 'viewmodels/clients', visible: true });
router.mapRoute({ url: 'client/:id', name: 'client', moduleId: 'viewmodels/client', visible: false });
使用 Durandal 1.x,您需要在将visible
每个路由添加到菜单集合之前检查其属性。在 2.0 中,该buildNavigationModel
功能将自动执行此操作。