在没有$ interval的情况下监视会话存储的更改

时间:2016-12-23 16:29:08

标签: angularjs

我正在构建一个应用程序,在其中我将数据保存在一个控制器中的会话存储中,而在我的其他控制器中,我使用$interval来持续监视sessionStorage以检查是否有这样的更改。

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

我觉得这不是一个继续观看的好方法,因为,例如,如果我想允许用户编辑vm.myData中的某些数据,他们就不能,因为变量会不断更新。

有没有办法简单地观察sessionStorage对象以查看'patient'是否已更改?我试图使用$watch函数,但我不认为我完全理解它是如何工作的。

1 个答案:

答案 0 :(得分:0)

一种方法是使用控制器$doCheck生命周期挂钩:

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

有关详细信息,请参阅AngularJS $compile Service API Reference -- Life-Cycle Hooks