2012-06-07 9 views
13

Hola a todos, he estado tratando de hacer esto sin suerte durante unos días.módulo de inyección angularjs después de la inicialización de la aplicación

de todos modos hay que cargar de forma asincrónica algunas secuencias de comandos js (que contienen módulos angulares) e insertarlas en la aplicación en ejecución después de que se haya inicializado.

Básicamente tengo un elemento DOM de contenedor que se completará con algo de HTML solicitado del servidor, basado en este código HTML, decidirá qué archivos js (módulos) serán necesarios, y luego los cargaré de manera asincrónica. aplicación angular y compilar el contenido con los nuevos módulos inyectados.

Lo intenté pero cada vez que hago el método bootstrap inyectando el módulo, el controlador principal se dispara y borra todo el estado de mi alcance. :(

Cualquier ayuda por aquí

+0

¿Puede dar un violín con lo que está tratando de hacer? – ganaraj

+0

Aquí está el violín http://jsfiddle.net/MForce/WVz8r/32/ eche un vistazo también a la versión http://jsfiddle.net/MForce/WVz8r/31/ 31 La versión funciona porque estoy cargando el módulos junto con la inicialización de la aplicación. Pero eso es exactamente lo que no quiero hacer, ya que no sé qué tipo de directivas contendrá mi plantilla, y cargaré los módulos de directivas en scripts separados de forma asincrónica. Entonces, básicamente, una vez que se inicia el módulo de la aplicación, ¿hay alguna manera de agregar/insertar módulos adicionales para que conozca las nuevas directivas? – MForce22

+0

Actualmente, no hay una forma "agradable" de hacer esto. Aunque, definitivamente está en nuestra lista para hacer. Buscar lista de correo para algunas ideas sobre cómo hackearlo :-D – Vojta

Respuesta

3

Es feo, pero funciona:? http://jsfiddle.net/MzseV/7/

Básicamente funciona iterando _invokeQueue miembro del módulo y la aplicación de funciones dentro de la utilización de proveedores utilizados para el registro de servicios, controladores y directivas (NOTA: estas deben ser capturadas antes de arrancar AFAIK). Esto probablemente también vuelva a registrar todo lo que haya registrado anteriormente, por lo que es posible que desee alguna heurística para elegir solo las que desee, aunque no estoy seguro de si hay alguna daño en re-registring.

Una vez más, es bastante horrible y hacky, así que solo lo usaría como último recurso.

Here's la pregunta que hice y luego respondí sobre esto.

EDIT: solo me di cuenta de la antigüedad de esta pregunta, espero que todavía ayude a alguien.

+0

Importante: ** NOTA: estos deben ser capturados antes de arrancar AFAIK ** –

Cuestiones relacionadas