2013-09-28 44 views
0

我想有一个每次它正在使用中,通过从cookie获取的数据进行评估并返回它作为一个JSON对象的资源,这样我就可以使用这种方式AngularJs服务/供应商消气

var data = $userData 

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

我可以做到这一点的功能,但我只能这样访问:**

$userData.SomeFunc() 

我能做到这一点与getter属性,但我可以访问它只有像这样的:

$userData.SomeData 

这就是我知道我可以用一个getter属性实现:

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

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

    return userData; 
}]); 

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

回答

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

+0

看一看我的最后一个例子,我想获取所有更新每次我直接调用没有属性的$ userData时,数据(在cookie中为bsaed),所以我在应用程序中的任何地方都可以像这样获取它:var data = $ cache。 –