Tengo un recurso User $ simple que usa la implementación de caché $ http predeterminada así:
factory('User', function($resource){
return $resource(endpoint + '/user/current/:projectId', {},
{get:
{
cache: true,
method: 'GET'
}
}
);
})
Esto funciona muy bien, es decir, mi servidor solo se llama una vez en mi aplicación, luego el valor se obtiene del caché.
Pero necesito actualizar el valor del servidor después de una determinada operación. ¿Existe una forma sencilla de hacerlo?
Gracias.
angularjs
angularjs-resource
Alexandre Bulté
fuente
fuente
cache
-{boolean|Cache}
- Si es verdadero, se usará una caché $ http predeterminada para almacenar en caché la solicitud GET; de lo contrario, si se creó una instancia de caché conRespuestas:
Mantenga el booleano y obtenga el
$http
caché:Luego, puede controlarlo como cualquier otro caché creado con
$cacheFactory
una instancia de uso que se proporciona a continuación:fuente
$resource
fábrica?En lugar de utilizar un argumento booleano en la
cache
propiedad de cadaaction
uno, puede pasar una instancia de caché creada con $ cacheFactory sobre la que puede tener más control (es decir, borrar la caché).Uso de ejemplo:
fuente
Encontré este hilo en busca de algo similar, pero descubrí que $ resource administrará el caché automáticamente, por lo que no es necesario forzar el borrado del caché.
La idea es que si tiene un recurso que puede consultar, esa respuesta de consulta se almacenará en caché, pero si guarda algo para ese mismo recurso, los datos almacenados en caché previamente deben ser inválidos, por lo que se borrará para usted. Tiene sentido que funcione de esta manera.
Aquí hay un código que utilizo para hacer esto (puede ignorar la parte de creación de fábrica posiblemente de aspecto extraño y prestar atención al cuerpo de la "clase").
Si llama a la función listPlayers varias veces, la primera llamada realiza una solicitud http get y todas las llamadas posteriores se almacenan en caché. Sin embargo, si llama a addPlayer, se realiza una publicación http como se esperaba, y luego la siguiente llamada a listPlayers realizará una obtención http (no almacenada en caché).
Esto lo mantiene fuera del negocio de administrar el caché de otra persona ($ http) y tratar de mantenerse al día con las URL que se utilizan para las solicitudes y las que se borran de los cachés en el momento adecuado.
Supongo que la moraleja de la historia aquí es trabajar con la biblioteca y todo estará bien ... excepto por errores o características incompletas, pero Angular no tiene ninguno de esos;)
ps Todo esto se ejecuta en AngularJS 1.2.0.
fuente