¿Alguien sabe cómo hacer que el disparo angular sea un evento cuando la vista ha cambiado? ¿O justo cuando se solicita y descarga una vista? Intento agregar animaciones de carga para cuando cambien las páginas.Seguir para ver cuándo una vista cambia en angularjs
Respuesta
Eche un vistazo a this thread Parece que el $httpProvider.responseInterceptors
es un buen lugar para agregar este tipo de cosas.
This fiddle muestra un buen ejemplo de dónde agregar código para iniciar/detener un spinner para solicitudes ajax. This fiddle es similar pero en realidad muestra y oculta una div 'Cargando ...'.
Si sólo desea mostrar un spinner cuando las opiniones cambian puede limitar su arranque/parada código para cuando content-type
es igual a text/html
similar a lo que muestra con this postapplication/json
.
Nota: en mis pruebas, parece que el headersGetter()['Content-Type']
en el spinnerFunction
se omite al recuperar mis archivos .html, mientras que se rellena al realizar llamadas de servicio.
Creo que un enfoque mucho más simple y adaptable sería utilizar la llamada AngularJS $http.pendingRequests.length
. Devuelve el conteo de llamadas ajax pendientes. Entonces cuando llega al 0
, la página está lista para cargarse.
Puede crear una directiva que inserta un div de carga (scrim) en cualquier elemento y luego espera a que todas las llamadas ajax se resuelvan y luego quita su spinner.
Aquí está la carne del código para hacer que sus AngularJS Directiva:
// Prepend the loading div to the dom element that this directive is applied.
var scrim = $('<div id="loading"></div>');
$(scrim).prependTo(domElement);
/**
* returns the number of active ajax requests (angular + jquery)
* $.active returns the count of jQuery specific unresolved ajax calls. It becomes 0 if
* there are no calls to be made or when calls become finished.
* @return number of active requests.
*/
function totalActiveAjaxRequests() {
return ($http.pendingRequests.length + $.active);
}
/**
* Check for completion of pending Ajax requests. When they're done,
* remove the loading screen and show the page data.
*/
scope.$watch(totalActiveAjaxRequests, function whenActiveAjaxRequestsChange() {
if(totalActiveAjaxRequests() === 0){
$log.log("done loading ajax requests");
$(scrim).remove();
$(domElement).css("position", "inherit");
}
});
Tenga en cuenta, $ .active es indocumentado.
¡Gracias por esto! ~ – matsko
En cualquier momento :) Me acabo de golpear la cabeza durante unas horas y pensé que compartiría. – Stone
BTW también puede usar '$ scope. $ Watch' para lograr el mismo efecto sin el uso de' setTimeout'. Esta sería una mejor opción ya que esto concuerda con los resúmenes de $ scope. También puedes usar este complemento, pero deberías llamar manualmente '$ scope.onReady()' cuando hayas terminado. https://github.com/yearofmoo/AngularJS-Scope.onReady – matsko
- 1. TDD. ¿Cuándo puedes seguir?
- 2. La vista no se actualiza en AngularJS
- 3. Uso de un complemento jQuery en una vista AngularJS
- 4. ¿Cuándo cambia el * Window focus * en Android?
- 5. ¿Cuándo dividir una vista MVC en dos?
- 6. cómo incluir un archivo javascript específico para cada vista angularjs
- 7. Angularjs - ¿Cambia dinámicamente dom con directivas o widgets?
- 8. AngularJS ng-style no cambia con la propiedad
- 9. crear una única vista html para vistas parciales múltiples en angularjs
- 10. ¿Cómo validar cuándo se marca una casilla de verificación en las pruebas AngularJS e2e?
- 11. ¿Cambia dinámicamente el contenido de una vista en NSSplitView?
- 12. Angularjs en una aplicación symfony2
- 13. jQuery evento para detectar cuándo cambia la posición del elemento
- 14. Determinar cuándo un ViewPager cambia las páginas
- 15. La vista de desplazamiento no cambia de tamaño cuando cambia el contenido de la vista infantil
- 16. Ver la animación no cambia el área táctil
- 17. AngularJS: la entrada no es vinculante para el alcance esperado cuando dentro de una vista
- 18. UINavigationController: ¿Cuándo recibe una vista presionada el mensaje Dealloc?
- 19. cómo determinar cuándo cambia la configuración en ios
- 20. Android dibujando una línea para seguir su dedo
- 21. Cómo detectar cuándo un usuario toca una vista en Android
- 22. ¿Cuándo es necesario ejecutar invalidate() en una vista?
- 23. Angularjs: cambiar la vista según el navegador/plataforma?
- 24. Cuándo utiliza Ver() frente a RedirectToAction
- 25. ¿Hay un gancho en Bash para saber cuándo cambia la cwd?
- 26. ¿Cómo detectar cuándo se cambia el tema en WP7?
- 27. ¿Usar el diseño XML como vista para ver la subclase?
- 28. Inicializar Google Map en AngularJS
- 29. Crear vista de superposición de clics ver
- 30. Cuándo usar @ en una vista de rieles y cuándo usar un símbolo?
Perfecto. Justo lo que necesito. Gracias :) – matsko
Esto solo funciona si tienes una sola solicitud de Ajax. – Meeker
¿Es esto actual para 1.2? – ericpeters0n