我想拥有一个资源,每次使用它时都会通过从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;
}]);
任何人都知道如何实现它?我试过通过工厂或服务来做但没有成功,因为它仅在第一次通话时进行评估。
答案 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