2016-03-27 3 views
4

Aureliaルータは、setRoot()を使用した後でも、最後にどのページを保存したかを記憶しています。アプリページを再度開きます。Aurelia setRootを使用して他のアプリケーションに切り替えるときの経路履歴をクリアする

私はそれをユースケースで説明しようとします。 私は2つのアプリを持っています:loginapploginアプリにログインし、appにリダイレクトされます。 /securedPageappでアクセスしてログアウトし、もう一度loginにリダイレクトされます。 loginに他のユーザーとログインして、app/securedPageにリダイレクトします。 私は欲しいですし、appにリダイレクトする必要があります。

setRoot()でアプリを切り替えると、経路履歴をクリアするにはどうすればよいですか?

答えて

6

は、この作業を持って、上記の提案はほとんど仕事最近、助けて募集彼らはいくつかの部分を欠いている。このスレッドでは、アウレリア(アイゼンバーグ)の作成者が提案してrepsonds: https://github.com/aurelia/framework/issues/590

だから、アプリのルートを切り替えるには、次の操作を行います。

私は実際にリセットをスキップして、一部を無効化することができ、私の場合は
this.router.navigate('/', { replace: true, trigger: false }); 
    this.router.reset(); 
    this.router.deactivate(); 

    this.aurelia.setRoot('app'); 

ちょうどしかし、やって

this.router.navigate('/', { replace: true, trigger: false }); 

を行うthis.router.navigate(「/」)なしで置き換えると、アプリのルートを複数回切り替える場合は特に、トリガー部分が問題を引き起こしました。

ので、追加してください:

 ... { replace: true, trigger: false }); 
+0

ありがとうございます。これは現在受け入れられている回答です。あなたが言ったことはすべて真実で、私もそれをテストしました。 – Travo

+0

これも私にとってはうまくいったのですが、 'setRoot'の後にもう1行追加する必要がありました: ' this.deactivate() '。これは、ここに無限にリロードされる問題が原因です:https://github.com/aurelia/router/issues/132 – Miguel

2

あなたはそれはかなりありませんが、これは、これは私のためにトリックをした

this.router.deactivate(); 
this.router.reset(); 
this.app.setRoot('app'); 
+0

私はしませんでしたが、私は、これはトリックを行う可能性があります感じています。私は近い将来、それを試してみるかもしれない、ありがとう! – Travo

+0

@Travoこれは正しい解決策であり、受け入れられる回答でなければなりません。これは 'AppRouter'で呼び出される必要があります(' deactivate() 'は子ルータには存在しません。また、正しく動作しません) –

+0

クールな豆です。確認していただきありがとうございます。 – Travo

1

を試してみました:

router.navigate("/"); 
aurelia.setRoot("login") 
関連する問題