2013-09-28 3 views
0

Я хотел бы иметь ресурс, который каждый раз, когда он используется это оценить его извлечение данных из печенья и вернуть его как объект JSON, так что я могу использовать его таким образом:AngularJs Услуга/Поставщик Getter

var data = $userData 

Примечание при получении параметра будут обновлены данные.

я могу сделать это с помощью функции, но тогда я могу получить доступ к нему только как это: **

$userData.SomeFunc() 

я могу сделать это с помощью свойства геттерного, , но тогда я могу получить доступ к нему только как это:

$userData.SomeData 

Это, как я знаю, что могу реализовать его свойства геттерного:

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

Посмотрите мой последний пример, я хотел бы получить все обновленные data (bsaed on cookie) каждый раз, когда я напрямую вызываю $ userData без свойств, поэтому я везде в приложении могу получить его так: var data = $ cache. –

Смежные вопросы