2017-06-05 5 views
0

提供されたURLのパラメータに基づいてページのタイトルタグを動的に変更しようとしています。私はこれを、Aureliaルーターの"router:navigation:success"(または "complete")イベントに登録することで行います。クラリティが必要です:ルータイベントに登録するAurelia(Typescript)

これは、ページのライフサイクルが最初から最後まで完了するとうまくいくが、URLが同じページ(this.router.navigateToRouteを使用している)で変更されたとき、それは前にあったため、購読したイベントは発生せず、タイトルタグは変更されません。例えば

  1. 私は/needs/volunteerに移動します。タイトルが読み取るAll Volunteering Opportunities
  2. このページでは、ドロップダウンのセットの選択が行われ、this.router.navigateToRouteを使用すると、URLは/needs/volunteer/city-abcに変更されます。購読したイベントが発生しなかったので、タイトルタグはまだAll Volunteering Opportunitiesとなります。
  3. /needs/volunteer/city-abcを指すURLでURLバーに入力すると、タイトルタグはVolunteering Opportunities in City ABCとなります。これは私が起こると予想されるものです。

this.router.navigateToRouteを指すイベントを購読する方法はありますか?

私たちが現時点で持っているように上記の機能を持つ理由は、URLパラメータでページを読み込むと、関連するドロップダウンが自動的に選択された値に設定されるからです。これにより、人々はURLを共有し、したがってページのコンテンツを共有することもできます。

ご協力いただきありがとうございます。

編集:

私はthis.router.navigateToRouteためtrigger: false/trueためのオプションが存在することに気づきました。私は現在falseに設定されており、ルータは上記のように機能を表示します。

trigger: trueに設定すると、私は望みの効果が得られますが、その時点で完全なページの再読み込みが行われていることがわかります。

私は明らかにこれが起こりたくないので、まだthis.router.navigateToRouteに関連するイベントを購読する方法を見ています。

答えて

0

this.router.navigateToRouteメソッドを完了した後、router:navigation:completeイベントを発行/発行するという単純な解決策がありました。

関連する問題