angularjs e evento di change localStorage

Memco alcuni dati nel localStorage

quello che voglio nell'applicazione angularjs è che quando i dati in localStorage sono cambiati, l'applicazione riesegue l'applicazione, come posso fare questo?

Esiste un module angular 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'; } }; 

Dopo un altro pensiero potrebbe essere necessario modificare il module da trasmettere su setItem in modo da poter essere avvisati se il file localStorage è stato modificato. Forse la forchetta e la linea 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 

o nella versione più recente della libreria la casella è stata modificata

 $rootScope.$broadcast('LocalStorageModule.notification.setitem',{key: prefix+key, newvalue: value}); 

Quindi nel tuo controller puoi:

 $scope.$on('LocalStorageModule.notification.setItem', function(event, parameters) { parameters.key; // contains the key that changed parameters.newvalue; // contains the new value }); 

Ecco una dimostrazione della seconda opzione: Demo: http://beta.plnkr.co/lpAm6SZdm2oRBm4LoIi1

** Aggiornato **

Ho forgiato quel progetto e ho incluso le notifiche qui se desideri utilizzare questo progetto: https://github.com/sbosell/angular-local-storage/blob/master/localStorageModule.js

Credo che la biblioteca originale accettasse il mio PR. La ragione per cui mi piace questa libreria è che abbia un backup del cookie nel caso in cui il browser non supporti l'archiviazione locale.

Per inciso, ho creato un altro module localStorage per AngularJS che si chiama ngStorage :

https://github.com/gsklee/ngStorage

L'utilizzo è estremamente semplice:

JavaScript

 $scope.$storage = $localStorage.$default({ x: 42 }); 

HTML

 <button ng-click="$storage.x = $storage.x + 1">{{$storage.x}}</button> 

E each cambiamento è automaticamente sincronizzato – anche le modifiche che accadono in altre tabs del browser!

Verifica la pagina del progetto GitHub per ulteriori demo ed esempi;)

Recentemente ho creato un module che consente di bind un tasto localStorage a una variabile di field $ e memorizzare anche oggetti, arrays, booleani e più direttamente all'interno di localStorage.

Github localStorage Module

 $scope.$on("LocalStorageModule.notification.setitem", function (key, newVal, type) { console.log("LocalStorageModule.notification.setitem", key, newVal, type); }); $scope.$on("LocalStorageModule.notification.removeitem", function (key, type) { console.log("LocalStorageModule.notification.removeitem", key, type); }); $scope.$on("LocalStorageModule.notification.warning", function (warning) { console.log("LocalStorageModule.notification.warning", warning); }); $scope.$on("LocalStorageModule.notification.error", function (errorMessage) { console.log("LocalStorageModule.notification.error", errorMessage); }); 

questo evento che chiama quando utilizza https://github.com/grevory/angular-local-storage#getstoragetype

in app config

 myApp.config(function (localStorageServiceProvider) { localStorageServiceProvider .setPrefix('myApp') .setStorageType('sessionStorage') .setNotify(true, true) });