AngularJs服务/提供商Getter

时间:2013-09-28 14:55:56

标签: javascript angularjs

我想拥有一个资源,每次使用它时都会通过从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;
}]);

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

1 个答案:

答案 0 :(得分: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