我已经建立了一个AngularJS工厂:
angular.module('app.services', [])
.factory('StorageService', function($localStorage) {
$localStorage.$default({
objA : ['foo','bar'],
objB : []
});
var _getByKey = function(storageItem){
return $localStorage.storageItem;
}
return {
get : _getByKey
};
});
在我的控制器中,我正在尝试检索它:
angular.module('app.controllers', [])
.controller('testCtrl', function($scope, StorageService) {
console.log(StorageService.get(objA));
}
我将在localStorage中存储多个对象,我希望能够灵活地通过工厂检索它们,而不是将$ localStorage依赖项与工厂一起注入。
我坚信问题在于工厂的参数传递。一些JavaScript破解我的大脑没有处理。大声笑。有任何想法吗? ^ _ ^
更新:对不起伙计们,我完全忘记了错误〜基本上,当执行此代码时,我得到“ReferenceError:objA未定义”
答案 0 :(得分:2)
这里的语法不太正确。您尝试要做的是传递您要检索的属性名称;你实际做的是传递一个尚未被声明的变量。
所以你需要改变的第一部分是:
console.log(StorageService.get('objA'));
传递字符串值,而不是变量。
在.get()
方法中,您正在尝试根据传入的值检索属性,但您实际在做的是查找属性storageItem
,该属性胜过'存在。如果要使用storageItem
的值,则需要使用括号语法。
return $localStorage[storageItem];