2013-09-28 41 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。 –