20

そこで2つ質問です。

  1. angularアプリケーションはリフレッシュページをどのように処理しますか、私が聞いたところによると、リフレッシュ時に $rootScope destroy() が実行され、アプリケーションが再実行され、再構成されます.$rootScopeを保持するエレガントな方法があるかどうか疑問に思っていました. $rootScope 変数を文字列としてストレージに保存する必要はありません。

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

4

3 に答える 3

21

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

于 2013-07-09T22:50:15.570 に答える
11

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

あなたが探しているのは、ページがリロードされたときにアプリケーションが残っていた「同じポイントから開始」する方法であるようです。状態の概念に慣れることをお勧めします。すべてのアプリケーションは、一連の状態とそれらの間の遷移として見ることができます。アプリケーション内で発生するすべてのユーザー操作またはその他のアクションは、アプリケーションの状態を変更するか、同じ状態に保ちます。例: ユーザーのリストからユーザー リンクをクリックすると、状態が「ユーザー リストの表示」から「id=213 のユーザーのユーザー詳細の表示」に変わり、「id= のユーザーのユーザー詳細の表示」の「編集」ボタンをクリックします。 213" は状態を "id = 213 のユーザーを編集" に変更します。これらの遷移が行われると、変数に値が割り当てられ、

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

コア $router ディレクティブ以外の状態マネージャーとして、ui-routerを使用できます。ui-routerを使用して状態をシリアライズして保存する方法については、URL を介してこれを行います。コア $router に対する ui-router の利点は、ネストされた状態が可能であり、一般的により柔軟であることです。

ui-routerには、github wiki https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-open-a-dialogmodal-atの 2 番目の質問に対する解決策もあります。 -特定の状態

于 2013-07-09T22:16:11.500 に答える