我的服務需要異步檢索一個值,但是一旦我有了它,我想使用緩存版本的值。角度服務緩存一個值
當兩個控制器調用這個服務時,我希望第一個緩存檢索值,第二個使用緩存值,但根據日誌,我從來沒有找到緩存值。當它運行時,我看到一條日誌消息,顯示正在緩存的值,然後,當我沿着一個角度路由到另一個控制器時,我看不到該服務找到緩存的值。爲什麼它沒有按照我的期望運行**
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