Saya menemukan utas ini mencari sesuatu yang serupa, tetapi menemukan bahwa $ resource akan mengelola cache untuk Anda secara otomatis, jadi tidak perlu memaksa cache dibersihkan.
Idenya adalah jika Anda memiliki sumber daya yang dapat Anda kueri, respons kueri itu akan di-cache, tetapi jika Anda menyimpan sesuatu untuk sumber daya yang sama, data yang sebelumnya di-cache harus tidak valid, sehingga data itu dihapus untuk Anda. Masuk akal bahwa ini akan berhasil.
Berikut beberapa kode yang saya gunakan untuk melakukan ini (Anda dapat mengabaikan bagian kreasi pabrik yang mungkin tampak aneh dan memperhatikan bodi "kelas").
'use strict';
sampleApp.players.$ng.factory('sampleApp.players.PlayerService', [
'$log',
'$resource',
sampleApp.players.PlayerService = function ($log, $resource) {
var service = {};
$log.info('Creating player resource.');
var Player = $resource('/api/players', {}, {query: {
isArray: true,
cache: true,
method: 'GET'
}});
service.addPlayer = function(playerName) {
$log.info('Saving a new player.');
return new Player({name: playerName}).$save();
};
service.listPlayers = function () {
$log.info('Fetching players.');
return Player.query();
};
return service;
}]);
Jika Anda memanggil fungsi listPlayers beberapa kali, panggilan pertama membuat permintaan get http dan semua panggilan berikutnya disimpan dalam cache. Jika Anda memanggil addPlayer, posting http dilakukan seperti yang diharapkan, dan panggilan berikutnya ke listPlayers akan melakukan http get (tidak di-cache).
Ini membuat Anda keluar dari urusan mengelola cache ($ http) orang lain dan mencoba mengikuti url mana yang digunakan untuk permintaan dan mana yang membersihkan cache pada waktu yang tepat.
Saya kira moral dari cerita di sini adalah bekerja dengan perpustakaan dan semuanya akan baik-baik saja ... kecuali untuk bug atau fitur yang tidak lengkap, tetapi Angular tidak memiliki semua itu;)
ps Ini semua berjalan di AngularJS 1.2.0.
cache
-{boolean|Cache}
- Jika benar, cache $ http default akan digunakan untuk menyimpan permintaan GET, jika tidak jika contoh cache dibangun dengan