我的create-team
路由的nav
属性由我的userService
中的可观察属性设置。 虽然我有一个问题。无法刷新router.navigation
阵列以反映我的房产isTeamMember
已更改。因此,即使我的isTeamMember
属性返回true,那么除非我进行整页刷新,否则路径不会被隐藏。当路由属性更新时,Aurelia路由器router.navigation不刷新
我试过router.refreshNavigation()
,它不起作用,因为据我所知,只有设置为nav: true
的路由将被添加到router.navigation
阵列中。
我正在循环访问router.navigation
数组以显示我的应用程序菜单。但是当用户创建一个团队时,我想从菜单中隐藏该路线,因为用户现在是团队所有者。我使用AuthorizeStep
来处理对该路线的访问,但它也可以动态地隐藏该路线。
app.ts
configureRouter(config: RouterConfiguration, router: Router){
...
var appRoutes = [
{ route: '/create-team', name:'create-team', moduleId: 'routes/create-team', nav: !this.userService.isTeamMember, title: 'menu.create-team', settings: { auth: { isNotTeamMember: true } } },
]
...
}
有没有干净的方式来刷新route.navigation
阵列,所以我的菜单,而不必做一个完整的页面刷新更新?
根据https://github.com/aurelia/router/issues/216你可能要** **手动鼓捣了'router.navigation'阵列,并添加/删除项目你想。类似于'let index = this.router.navigation.findIndex(r => r.name =='name-you-want-to-remove'); this.router.navigation.splice(index,1);' –
@ GabyakaG.Petrioli我希望我能避免这种情况。让我们看看是否有另一种解决方案,但感谢您的意见! – maximedubois
问题是'!this.userService.isTeamMember'正在评估一个属性。您不是绑定到该属性的数据绑定,只是在创建路由时对其进行评估,并且在该属性值更改时不会自动更改。我喜欢'zedL'建议的解决方案。还有其他一些选择,但是给出的选项并不差。 –