0

我想要一个资源,每次使用它时,它都会通过从 cookie 中获取数据并将其作为 JSON 对象返回来评估它,所以我可以这样使用它

var data = $userData

注意获取参数时会获取更新的数据。

我可以用一个函数来做到这一点,但是我只能像这样访问它:**

$userData.SomeFunc()

我可以使用 getter 属性来做到这一点,但是我只能像这样访问它:

$userData.SomeData

这就是我知道我可以使用 getter 属性实现它的方式:

proGamersApp.factory('$userData', ['cookiesStorage', function (cookiesStorage) {

    var userData = {
        get SomeData() {
            return cookiesStorage.getCookie();
        }  
    };

    return userData;
}]);

任何人都知道我该如何完成它?我试过通过工厂或服务来做,但没有成功,因为它只在第一次通话时评估。

4

1 回答 1

3

不要$在你自己的变量中使用。这$是为了标记 AngularJS 自己的私有内容。

至于如何创建可通过其属性名称访问的服务,您可以尝试以下操作:

proGamersApp.factory('userData', ['cookiesStorage', function(cookiesStorage) {

  var userData = {}

  // this function immediately executes itself and 
  // calculates the value that you wanna return
  // once it is loaded
  userData.someProperty = (function() {
    // do stuff here
    var val = 1
    return val
  })()

  userData.simplerProperty = 3

  return userData
}]);

现在,当您在其他地方请求此服务时,您将能够像这样访问它的属性:

userData.someProperty // will return 1

userData.simplerProperty // will return 3

于 2013-09-28T17:04:11.663 回答