oclazyloadprovider javascript angularjs angular-ui-router lazy-loading

javascript - oclazyloadprovider - Ui-router angular y ocLazyLoad



angular oclazyload (1)

Guión:

Tengo algunos módulos angulares como:

angular.module(''app'', [''app.core'', ''app.views'']); // not lazy load

Cada módulo en app.views utiliza un RouterUtil para registrar su propia ruta, como:

$stateProvider.state(''state name'', {/* some configs here */});

Este RouterUtil también tiene un método para acceder a todos los estados registrados (utilizado para crear un menú dinámico).

Y estoy usando ocLazyLoad , solo para cargar un módulo externo. Cuando la página se está cargando, ocLazyLoad realizará una solicitud a otros js con algunos módulos angulares y luego agregará este módulo al entorno real.

El problema ocurre cuando voy a una página de este módulo externo y trato de actualizar la página:

Que esta pasando:

  • Angular comienza y registra algunos $ estados
  • ocLazyLoad inicia una solicitud para el módulo externo
  • ui-routes intenta analizar la URL real, y se da cuenta de que no hay estado para esta URL y redirige al usuario a la página predeterminada (de lo contrario)
  • ocLazyLoad finaliza la solicitud y agrega todos los módulos nuevos al entorno angular. En este momento tenemos un estado con la URL solicitada (la misma que antes de la actualización)

¿Puedo hacer ui-router esperar la solicitud ocLazyLoad antes de comprobar si esta es una URL registrada?


desea utilizar deferIntercept() para retrasar a ui-router de ver la URL.

app.config(function($urlRouterProvider) { urlRouterProvider.deferIntercept(); }); ... ocLazyLoad stuff app.run(function($urlRouter) { ocLazyLoadPromise.then(function() { urlRouter.listen(); }); });

http://angular-ui.github.io/ui-router/site/#/api/ui.router.router . $ urlRouterProvider