传递对象键作为参数检索的参数

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];

Demo