在Aurelia添加或不添加路线

时间:2016-09-20 10:56:01

标签: aurelia aurelia-router

我正在尝试在布尔值上添加一个deppending路由,所以如果condtion满足,路径将显示并且在导航栏中,如果不是,则不会添加。

我已经尝试改变导航:选项取决于条件,但我错过了一些东西......

{ 
  route: 'aRoute', 
  moduleId: 'modules/something/mySite, 
  nav: cond ? true : false, 
  title: 'mySite', 
  isStatic: false
}

可能我很傻,但我需要帮助......:/

2 个答案:

答案 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是假的,或condtrue,则会显示导航路线。当然,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();