2013-06-26 10 views
18

2つの質問があります。角度のアプリケーションは、B/C私が聞いたから、リフレッシュページをどのように処理します

  1. 、$ rootScope破壊()リフレッシュし、アプリケーションの再実行と再設定は-edます、とあります場合、私は思っていました$ rootScope変数を文字列としてストレージに格納することなく、$ rootScopeを保存するための洗練された方法です。

  2. ページ上にモーダルを読み込むディレクティブにテンプレートを読み込むと、履歴をナビゲートせずに開いたモーダルを元に戻すように設定できますか?検証のために、私はhrefを使って同じ関数を実装することはできないと思います。

+0

私はあなたの2番目の質問を理解しません。 – John

+1

私が言っていることは、リフレッシュによってアプリケーションが破壊されるため、すべてのモジュールがリセットされます。保存されているサービスと破棄されていないサービスはありますか?またはリフレッシュによってアプリケーションを破壊できないようにする方法があります。 – user2167582

+1

私が考えることができる唯一の方法は、localStorageを使用するか、アプリケーションにアクセスして取得したサーバーにそのデータを保存することです。私が知っている限り、これを行う方法はありません。 – John

答えて

21

を持っています。これは$ rootScopeを破壊することなくページをリフレッシュします。
a plunker to show thisを作成しました。コントローラーは、ページがリロードされた回数をカウントします。

+1

ブラウザのリフレッシュを無効にして$ route.reloadだけを許可する方法はありますか? – user2167582

+0

ページの更新を無効にすることを意味しますか?私はこれが完全に可能であるとは思わない。同じ質問をするこの質問を見てください。http://stackoverflow.com/questions/2482059/disable-f5-and-browser-refresh-using-javascript – pasine

+1

@notme:これは私のために働いていませんでした。私はちょうど\tを追加しました。 $ scope.reloadCtrl = function(){ \t \t console.log( 'reloading ...'); \t \t $ route.reload(); \t}これは解雇されませんでしたか? –

11

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

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

「同じポイントから開始」問題に必要な2つのことは、状態マネージャとシリアル化およびストア状態。

core $ routerディレクティブ以外にも、状態マネージャとしてui-routerを使用できます。 ui-routerで状態をシリアライズして保存する方法は、これをURLで行います。コアのルータと比較してui-routerのメリットは、ネストされた状態を可能にし、一般に柔軟性があることです。

ui-routerは、あなたのurlのが$routeProviderにマッピングされている場合は、あなたが$route.reload()を起動するコントローラをリロードすることができ、また、そのgithubののwikiであなたの2番目の質問のためのソリューションhttps://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-open-a-dialogmodal-at-a-certain-state

2

js変数を保持するためにwindow.localstorageを使用できませんか?そうすれば、ユーザーがアプリの外にページを更新して値を再読み込みすることができます