1

angular 1.5 状態 (ネストされた状態、タブ状態、モーダル統計) をうまく使用しています

Ui-router-extras にはスティッキー状態がありますが、従来の親子状態アーキテクチャとの違いがわかりません。

スティッキー状態の基本的な例は、スティッキーがなくてもできることです。 http://plnkr.co/edit/SCHExh4DYKFd9Kq3UbaA?p=preview

を削除するsticky: trueと、同じ動作が得られます

4

1 に答える 1

3

いいえ、そうではありません。実際に行うことui-routerは、アプリをステート マシンに変換することです。また、ステート マシンの厳密な定義は、任意の時点で 1 つのステートしかアクティブにできないというものです

これが意味することは、 から に遷移するたびstateAstateBstateAのスコープ (およびコントローラーなどの他のアセット) が破棄され、stateBインスタンス化されるということです。文字通り、stateAstateBのコントローラーとスコープを同時にアクティブにすることはできません。結論として、厳密なステート マシンでは、パラレル (別名スティッキー) ステートは許可されません。

ui-router-extrasこれをしましょう。一度に複数の状態をアクティブにすることができます。

シナリオの例を見てみましょう。

  1. 最初に に移動しstateAます。
  2. ではstateA、100 秒から 0 秒までのカウントダウンを開始しました。
  3. 57 秒の途中で、stateBデータを取得するために に移動します。で 10 秒間過ごしstateBます。
  4. あなたはに戻りますstateA

さて、通常のui-router. に戻るステップ 4 にいるときstateA、カウントダウンは 100 秒から再開されます。粘着状態と同様に、カウントダウンは 57-10 = 47 秒から始まります。

ui-router通常の の場合、 にトランジットするstateBと、stateAのスコープが破棄されるため、これは重要です。に戻るとstateAすべてが再インスタンス化されるため、カウントダウンは再び 100 から始まります。スティッキー状態を使用している場合、スコープは保持されます。

これは、あなたのものからフォークされたplkr デモです。をコメントアウトしてsticky:true、タブ 1 とタブ 2 を行き来すると、違いがわかります。

于 2017-01-13T04:55:32.267 に答える