web-dev-qa-db-ja.com

angularアプリケーションはページの更新を処理し、ディレクティブのロード時に$ historyを使用できますか

2つの質問です。

  1. どのようにangularアプリケーションが更新ページを処理しますか、私が聞いたものからb/c、更新時に$ rootScope destroy()を実行し、アプリケーションが再実行および再構成されます-そして、私は疑問に思っていました$ rootScope変数を文字列としてストレージに保存することなく、$ rootScopeを保存するエレガントな方法があります。

  2. ページにモーダルをロードするディレクティブにテンプレートをロードした場合、開いているモーダルをナビゲートせずに元に戻すように履歴を構成することは可能ですか?検証などのため、hrefを使用して同じ機能を実装することは不可能だと思います。

19
user2167582

URLが_$routeProvider_でマップされている場合、$route.reload()を呼び出すコントローラーをリロードできます。これにより、$ rootScopeを破棄せずにページが更新されます。
create これを表示するプランカー を作成しました。コントローラーは、ページがリロードされた回数をカウントします。

21
pasine

おそらく、ページのリロードを通じてjavascript変数を保持する方法はなく、$ rootScopeは単なるjavascript変数です。

あなたが探しているのは、ページがリロードされたときに残された「同じポイントから開始する」アプリケーションを作成する方法であると思われます。 stateの概念に精通することをお勧めします。すべてのアプリケーションは、一連の状態とそれらの間の遷移として見ることができます。アプリケーション内で発生するすべてのユーザーインタラクションまたはその他のアクションは、アプリケーションの状態を変更するか、同じ状態を維持します。たとえば、ユーザーのリストからユーザーリンクをクリックすると、状態が「ユーザーリストの表示」から「id = 213のユーザーのユーザー詳細の表示」に変わり、「id =のユーザーのユーザー詳細の表示」 213」は状態を「id = 213のユーザーを編集」に変更します。そして、これらの遷移が行われると、変数に値が割り当てられ、ビューが変更され、リクエストが送信されます。

「同じポイントから開始する」問題に必要な2つのことは、状態マネージャーと、状態をシリアル化して保存する方法です。

コア$ routerディレクティブのほかに状態マネージャーとして i-router を使用できます。 i-router で状態をシリアル化して保存する方法については、URLを使用してこれを行います。コアの$ routerに対するui-routerの利点は、ネストされた状態を許可し、一般に柔軟性が高いことです。

i-router には、github wikiの2番目の質問に対する解決策もあります https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#特定の状態でダイアログモードを開く方法

11
ihor marusyk

Window.localstorageを使用してjs変数を保持できませんでしたか?そうすれば、ユーザーがアプリの外部でページを更新すると、値をリロードできます

2
hamncheez