我正在构建一个应用程序,在其中我将数据保存在一个控制器中的会话存储中,而在我的其他控制器中,我使用$interval
来持续监视sessionStorage
以检查是否有这样的更改。
$interval(function(){
vm.myData = JSON.parse(sessionStorage.getItem('patient'));
}, 300)
我觉得这不是一个继续观看的好方法,因为,例如,如果我想允许用户编辑vm.myData中的某些数据,他们就不能,因为变量会不断更新。
有没有办法简单地观察sessionStorage对象以查看'patient'
是否已更改?我试图使用$watch
函数,但我不认为我完全理解它是如何工作的。
答案 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。