angularjs和localStorage更改事件
我将一些数据存储在localStorage中
我想在我的angularjs应用程序中看到的是,当localStorage中的数据更改时,该应用程序会重新渲染该应用程序,我该怎么做?
回答:
有一个角度的localStorage模块:
https://github.com/grevory/angular-local-
storage
var DemoCtrl = function($scope, localStorageService) { localStorageService.clearAll();
$scope.$watch('localStorageDemo', function(value){
localStorageService.add('localStorageDemo',value);
$scope.localStorageDemoValue = localStorageService.get('localStorageDemo');
});
$scope.storageType = 'Local storage';
if (!localStorageService.isSupported()) {
$scope.storageType = 'Cookie';
}
};
经过进一步考虑,您可能需要将模块更改为在setItem上广播,以便在localStorage发生更改时得到通知。也许在第50行附近分叉:
localStorage.setItem(prefix+key, value);$rootScope.$broadcast('LocalStorageModule.notification.setItem',{key: prefix+key, newvalue: value}); // you could broadcast the old value if you want
或在库的最新版本中,更改了大小写
$rootScope.$broadcast('LocalStorageModule.notification.setitem',{key: prefix+key, newvalue: value});
然后,在您的控制器中,您可以:
$scope.$on('LocalStorageModule.notification.setItem', function(event, parameters) { parameters.key; // contains the key that changed
parameters.newvalue; // contains the new value
});
这是第二个选项的演示:演示:http :
//beta.plnkr.co/lpAm6SZdm2oRBm4LoIi1
我分叉了该项目,并在您要使用该项目的事件中包括了以下通知:https : //github.com/sbosell/angular-
local-
storage/blob/master/localStorageModule.js
我相信原始图书馆接受了我的PR。我喜欢这个库的原因是,如果浏览器不支持本地存储,它具有cookie备份。
以上是 angularjs和localStorage更改事件 的全部内容, 来源链接: utcz.com/qa/409539.html