您可以编写一个包装类,它在$ rootScope上发送一个事件,然后监听需要更新的事件。
'use strict';
(function(angular) {
angular
.module('myModule')
.service('StorageService', ['$rootScope', function($rootScope) {
this.getItem = function(key) {
return localStorage.getItem(key) || undefined;
};
this.setItem = function(key, value) {
localStorage.setItem(key, value);
$rootScope.$emit('STORAGE_SERVICE_' + key.toUpperCase() + '_UPDATED');
}
}]);
})(window.angular);
(function(angular) {
angular
.module('myModule')
.controller('myController', ['$scope', 'StorageService', function($scope, StorageService) {
$scope.$on('STORAGE_SERVICE_ISUNLOCKED_UPDATED', function() {
var isUnlocked = StorageService.getItem('isUnlocked');
if(isUnlocked === "true") {
$scope.$apply(function() {
$scope.unlocked = true;
});
}
});
}]);
})(window.angular);
是否想在另一个浏览器窗口中观看localStorage? – k4l4m
不,我只想观察一个值是否已经改变,然后运行$ scope.unlocked。 $ scope.unlocked是一个ng-hide。只要值改变,它应该从屏幕上删除内容。 – olivier