私はCacheFactoryを使用してサービスを作成しました。私はそれがシングルトンであることを期待していました。私は私のコントローラにそれを注入し、それはコントローラの範囲内で正常に動作します。しかし、いったん別のスコープを持つ別のページに行くと、別のスコープで同じコントローラに保存されたキャッシュ内の値を持つようには見えません。 CacheFactoryの動作は、私がCacheServiceを注入するどこでも同じキャッシュされたオブジェクトを持つシングルトンではないでしょうか?angularjsのCacheFactoryはシングルトンですか?
これは例として私のサービスである:私のコントローラで次に
angular.module('MyService', []).factory('CacheService', function($cacheFactory) {
return $cacheFactory('cacheService', {
capacity: 3 // optional - turns the cache into LRU cache
})
});
:
function MyController($scope, CacheService) {
var results= CacheService.get('storedvalue');
if(!results){
CacheService.put('storedvalue', results);
alert('results not stored');
}
else
alert('results stored');
}
ありがとうございました。あなたの例が働く。そして、私が近づくにつれて私もそうしています。それがうまくいかないのは、ブラウザをリフレッシュする場合です。今、私はそれを考えると、ブラウザをリフレッシュするときに再び角度をつけてブートストラップするので、おそらく意味をなさないでしょう。だから、その場合はおそらく私はもはやあなたが同意するキャッシュの値を持っている意味がありますか? – DavidB
はい、状態は現在のページの読み込みに完全にバインドされています。 AngularJS(およびすべてのクライアント側のMVCフレームワーク)は、シングルページアプリケーションで使用することを意図しています(ただし、これらに限定されません)。しかし、必要に応じてローカルストレージを使用して永続化することができます。あなたは自分でサービスを書くだけです。 –