我正在尝试在布尔值上添加一个deppending路由,所以如果condtion满足,路径将显示并且在导航栏中,如果不是,则不会添加。
我已经尝试改变导航:选项取决于条件,但我错过了一些东西......
{
route: 'aRoute',
moduleId: 'modules/something/mySite,
nav: cond ? true : false,
title: 'mySite',
isStatic: false
}
可能我很傻,但我需要帮助......:/
答案 0 :(得分:2)
我不是百分百肯定,但路线可能是一次构建并重复使用,至少是那些属于导航模型(nav === true
)的路线。这意味着您不能对nav
使用动态表达式,因为它只会被处理一次。
如果您只需要在导航栏中显示路线,那么您可以使用settings
property创建一个变通方法,以某种方式标记路线并在创建导航栏时进行条件检查。
{
route: 'aRoute',
moduleId: 'modules/something/mySite,
nav: true,
title: 'mySite',
settings: { occasionallyVisible: true } // add your own properties here...
}
我使用了settings.occasionallyVisible
属性,但您可以添加任何您喜欢的内容。
<li repeat.for="route of router.navigation"
if.bind="!route.settings || !route.settings.occasionallyVisible || cond">
<a href.bind="route.href">${route.title}</a>
</li>
如果导航路线没有settings
属性或settings.occasionallyVisible
是假的,或cond
是true
,则会显示导航路线。当然,cond
就是你需要的条件。
不那么优雅,但它应该完成工作,直到你得到更好的答案:)
答案 1 :(得分:1)
以下帖子可以帮助您做您想做的事: http://odetocode.com/blogs/scott/archive/2016/05/31/dynamically-add-routes-in-aurelia.aspx
它显示了如何动态添加路由:
this.router.addRoute(
{ route: "secret", name: 'secret', moduleId: "app/secret",
title:"Secret", nav:true
}
);
然后用这个方法调用刷新路由器(你显然缺少它):
this.router.refreshNavigation();