传递对象键作为参数检索的参数
Passing object key as an argument for parameter retrieval
我建了一个 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 is not defined"
你这里的语法不太正确。您 尝试 做的是传递您要检索的 属性 名称;你实际上正在做的是传递一个尚未声明的变量。
因此您需要更改的第一部分是:
console.log(StorageService.get('objA'));
传递字符串值,而不是变量。
在您的 .get()
方法中,您试图根据传入的值检索 属性,但您实际上正在寻找 属性 storageItem
,这将不存在。如果要使用storageItem
的值,需要使用括号语法
return $localStorage[storageItem];
我建了一个 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 is not defined"
你这里的语法不太正确。您 尝试 做的是传递您要检索的 属性 名称;你实际上正在做的是传递一个尚未声明的变量。
因此您需要更改的第一部分是:
console.log(StorageService.get('objA'));
传递字符串值,而不是变量。
在您的 .get()
方法中,您试图根据传入的值检索 属性,但您实际上正在寻找 属性 storageItem
,这将不存在。如果要使用storageItem
的值,需要使用括号语法
return $localStorage[storageItem];