Comment faire pour actualiser / invalider $cache des ressources en AngularJS
J'ai un simple Utilisateur $ressource qui utilise la valeur par défaut $cache http mise en œuvre comme suit:
factory('User', function($resource){
return $resource(endpoint + '/user/current/:projectId', {},
{get:
{
cache: true,
method: 'GET'
}
}
);
})
Cela fonctionne très bien, c'est à dire mon serveur n'est appelée qu'une fois dans ma demande, alors la valeur est récupérée à partir de la mémoire cache.
Mais j'ai besoin d'actualiser la valeur du serveur après une certaine opération. Est-il un moyen facile de faire cela?
Grâce.
- Je suis l'aide de la distribution instable (1.1.5 mais je pense que c'est là depuis 1.1.2)
cache
–{boolean|Cache}
– Si la valeur est true, la valeur par défaut $cache http sera utilisé pour le cache de la requête GET, sinon, si une instance de cache intégré avec - je vais avoir le même problème, mais seulement lors de l'essai. comment puis-je le buste de cette chose au niveau du navigateur?
Vous devez vous connecter pour publier un commentaire.
Garder le booléen et obtenir le
$http
cache:Alors vous pouvez contrôler comme n'importe quel autre cache fait avec
$cacheFactory
, une utilisation de l'exemple fourni ci-dessous:remove()
clé. Les Url relatives pour faire le travail, bien que, au moins dans 1.2.9.$resource
usine?Au lieu d'utiliser un argument booléen dans le
cache
de la propriété de chaqueaction
vous pouvez passer sur une instance de cache créé avec $cacheFactory qui vous pouvez avoir plus de contrôle sur (c'est à dire vider le cache).Exemple d'utilisation:
Je suis tombé sur ce thread à la recherche de quelque chose de similaire, mais a constaté que $ressource de gérer le cache automatiquement pour vous, il n'ya donc pas besoin de forcer le cache est effacé.
L'idée est que si vous disposez d'une ressource que vous pouvez faire une requête, que la réponse à la requête va être mis en cache, mais si vous enregistrez quelque chose pour que la même ressource, précédemment mis en cache les données doivent être invalide, il est nettoyé pour vous. Il est logique que cela fonctionnerait de cette façon.
Voici un code que j'utilise pour ce faire (vous pouvez ignorer la peut-être bizarre usine de création et de prêter attention à la "classe" du corps).
Si vous appelez la listPlayers de fonction à plusieurs reprises, le premier appel fait une demande http get et tous les appels suivants sont mis en cache. Si vous appelez addPlayer cependant, un http post est effectuée comme prévu, et puis le prochain appel à listPlayers va effectuer un http get (pas de mise en cache).
Cela vous maintient de l'activité de gestion de quelqu'un d'autre ($http) cache et en essayant de garder en place avec l'url qui ont été utilisés pour les demandes et qui sont à la compensation des caches au bon moment.
Je suppose que la morale de l'histoire ici est de travailler avec la bibliothèque et tout ira bien... sauf pour les bugs ou incomplète de fonctionnalités, mais Angulaire de ne pas avoir l'un de ceux-ci 😉
p.s. Tout ceci est en cours d'exécution sur AngularJS 1.2.0.