私のcreate-team
ルートのプロパティが、私のuserService
の観測可能なプロパティによって設定されています。 しかし私は1つの問題があります。私のプロパティisTeamMember
が変更されたことを反映するためにrouter.navigation
アレイをリフレッシュする方法はありません。だから私のisTeamMember
プロパティがtrueを返しても、私は完全なページリフレッシュを行わない限り、ルートは隠されません。ルートプロパティが更新されたときに、Aurelia-router router.navigationが更新されない
私はnav: true
に設定されたルートだけがrouter.navigation
アレイに追加されることを理解しているので、router.refreshNavigation()
で試してみましたが機能しませんでした。
私は現在、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 == '削除したい名前'); this.router.navigation.splice(index、1);' –
@ GabyakaG.Petrioli私はそれを避けることを望む。別の解決方法があるかどうかを見てみましょう。 – maximedubois
問題は '!this.userService.isTeamMember'がプロパティを評価していることです。あなたはそのプロパティにデータバインドするのではなく、ルートを作成するときに評価するだけで、そのプロパティの値が変更されたときに自動的に変更されるわけではありません。私は 'zedL'によって提案された解決策が好きです。いくつかのオプションがありますが、与えられたものは悪くありません。 –