Saya memiliki User $ resource sederhana yang menggunakan implementasi cache $ http default seperti:
factory('User', function($resource){
return $resource(endpoint + '/user/current/:projectId', {},
{get:
{
cache: true,
method: 'GET'
}
}
);
})
Ini bekerja dengan sangat baik, yaitu server saya hanya dipanggil sekali dalam aplikasi saya, kemudian nilainya diambil dari cache.
Tetapi saya perlu menyegarkan kembali nilai dari server setelah operasi tertentu. Apakah ada cara mudah untuk melakukannya?
Terima kasih.
angularjs
angularjs-resource
Alexandre Bulté
sumber
sumber
cache
-{boolean|Cache}
- Jika benar, cache $ http default akan digunakan untuk menyimpan permintaan GET, jika tidak jika contoh cache dibangun denganJawaban:
Simpan boolean dan dapatkan
$http
cache:Kemudian Anda dapat mengontrolnya seperti cache lain yang dibuat
$cacheFactory
, contoh penggunaan yang disediakan di bawah ini:sumber
$resource
pabrik?Alih-alih menggunakan argumen boolean di
cache
properti masing-masing,action
Anda dapat meneruskan turunan cache yang dibuat dengan $ cacheFactory yang dapat Anda kontrol lebih (yaitu, kosongkan cache).Contoh penggunaan:
sumber
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").
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.
sumber