Мой сервис должен получать значение асинхронно, но как только он у меня есть, я хотел бы использовать кешированную версию значения.Угловое кеширование службы значение
Когда два контроллера называют эту услугу, я ожидаю, что первый из них будет кэшировать полученное значение, а второй - использовать кешированное значение, но, согласно журналу, я никогда не нахожу кешированное значение. Когда это выполняется, я вижу сообщение журнала, в котором отображается кешированное значение, а затем, когда я следую по угловому маршруту на другой контроллер, я не вижу, что служба находит кешированное значение. Почему это не работает в соответствии с моими ожиданиями ** **
angular.module('myApp.services').factory('Config', function() {
var Config = { };
Config.currentYear = function() {
if (Config._currentYear) {
// sadly, we never execute here
console.log("returning cached year");
return Parse.Promise.as(Config._currentYear);
}
return Parse.Config.get().then(function(config) {
console.log("caching year");
Config._currentYear = config.get("currentYear");
return Config._currentYear;
});
};
return Config;
});
Пары отмечает: (1) Я назвал кэшированный атрибут _currentYear, добавив подчеркивание, чтобы избежать столкновений с именем функции. Не уверен, что мне нужно это сделать. (2) Я возвращаю выполненное обещание, когда значение кэшируется, поэтому функция всегда возвращает обещание ... также не уверен, что это необходимо, но цифра не может повредить.
Так в чем же проблема? – dfsq
Его было указано в вопросе прямо под кодом. Я переместил вопрос на код выше – user1272965
Проверял другие подобные вопросы? http://stackoverflow.com/questions/15100020/using-angular-service-to-share-data-between-controllers – ochi