Able to bind to scope using different keys.

master
Yihang Ho 10 years ago
parent 84a9b404b6
commit 0b8d7820e9

@ -359,8 +359,12 @@ angularLocalStorage.provider('localStorageService', function() {
return storageType; return storageType;
}; };
var bindToScope = function(scope, key, def) { var bindToScope = function(scope, scopeKey, def, lsKey) {
var value = getFromLocalStorage(key); if (!lsKey) {
lsKey = scopeKey;
}
var value = getFromLocalStorage(lsKey);
if (value === null && angular.isDefined(def)) { if (value === null && angular.isDefined(def)) {
value = def; value = def;
@ -368,10 +372,10 @@ angularLocalStorage.provider('localStorageService', function() {
value = angular.extend(def, value); value = angular.extend(def, value);
} }
$parse(key).assign(scope, value); $parse(scopeKey).assign(scope, value);
scope.$watchCollection(key, function(newVal) { scope.$watchCollection(scopeKey, function(newVal) {
addToLocalStorage(key, newVal); addToLocalStorage(lsKey, newVal);
}); });
}; };

@ -249,6 +249,19 @@ describe('localStorageService', function() {
expect($rootScope.obj.property).toEqual(localStorageService.get('obj.property')); expect($rootScope.obj.property).toEqual(localStorageService.get('obj.property'));
})); }));
it('should be able to bind to scope using different key', inject(function($rootScope, localStorageService) {
localStorageService.set('lsProperty', 'oldValue');
localStorageService.bind($rootScope, 'property', undefined, 'lsProperty');
expect($rootScope.property).toEqual(localStorageService.get('lsProperty'));
$rootScope.property = 'newValue';
$rootScope.$digest();
expect($rootScope.property).toEqual(localStorageService.get('lsProperty'));
}));
//sessionStorage //sessionStorage
describe('SessionStorage', function() { describe('SessionStorage', function() {