私のサービスは値を非同期的に取得する必要がありますが、いったん取得すれば、キャッシュされた値を使用したいと思います。角度サービスキャッシュの値
2つのコントローラがこのサービスを呼び出すと、最初にキャッシュされた値をキャッシュし、2番目のキャッシュにはキャッシュされた値を使用すると考えられますが、ログによればキャッシュされた値は決して見つかりません。これが実行されると、値がキャッシュされていることを示すログメッセージが表示されます。別のコントローラへの角度経路をたどると、キャッシュされた値が見つかることはありません。なぜそれは私の期待に応じて実行されません**
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