2016-12-23 6 views
0

私は1つのコントローラのデータをセッションストレージに保存するアプリケーションを構築しています。他のコントローラでは$intervalを使用して常にsessionStorageのように変更を確認します。私は、ユーザーがvm.myData内のデータの一部を編集できるようにしたい場合は、たとえば、彼らはカント、ので、変数を保持しますように私はこのように感じる

$interval(function(){ 
     vm.myData = JSON.parse(sessionStorage.getItem('patient')); 
    }, 300) 

は、見続けるための良い方法ではありませんそれ自体を更新する。

'patient'が変更されたかどうかをsessionStorageオブジェクトで確認する方法はありますか?私は$watch機能を使用しようとしましたが、私はそれがどのように機能するのかよく分かりません。 AngularJS $compile Service API Reference -- Life-Cycle Hooksを参照してください

this.$doCheck = function() { 
    var previousValue; 
    var currentValue; 
    previousValue = currentValue; 
    currentValue = sessionStorage.getItem('patient')); 
    if (currentValue !== previousValue) { 
     console.log("patient changed"); 
    }; 
}; 

+0

それがうまくいくかどうかわからないのですが、なぜ$ watchを使ってrootScope varにセッションストレージを割り当てるのでしょうか。 – alphapilgrim

+0

セッションストレージを常に監視するのではなく、イベントを発生させて聴いてみませんか?あなたのアプリにとっても大きなパフォーマンス向上になるでしょう。 – 31piy

+0

アプリケーションのコピーが1つのみであることを考慮すると、サービス・ゲッター/セッターによってsessionStorage読み取り/書き込み操作を管理できます。この場合、RxJS観測値は有益です。 Btw、$間隔でポーリングはひどいものです、それは各間隔でダイジェストを引き起こします。 – estus

答えて

0

一つのアプローチは、コントローラ$doCheckライフサイクルフックを使用することです。

関連する問題