Saltar al contenido

¿Hay una devolución de llamada de procesamiento posterior para la directiva Angular JS?

Sandra, parte de este equipo, nos ha hecho el favor de redactar este escrito ya que controla muy bien dicho tema.

Solución:

Si no se proporciona el segundo parámetro, “retraso”, el comportamiento predeterminado es ejecutar la función después de que el DOM haya completado la representación. Entonces, en lugar de setTimeout, use $timeout:

$timeout(function () 
    //DOM has finished rendering
);

Tuve el mismo problema y creo que la respuesta realmente es no. Vea el comentario de Miško y alguna discusión en el grupo.

Angular puede rastrear que todas las llamadas de función que realiza para manipular el DOM están completas, pero dado que esas funciones podrían desencadenar una lógica asíncrona que aún actualiza el DOM después de su regreso, no se puede esperar que Angular lo sepa. Cualquier devolución de llamada Angular da puede que funciona a veces, pero no sería seguro confiar en él.

Resolvimos esto heurísticamente con un setTimeout, como lo hiciste tú.

(Tenga en cuenta que no todos están de acuerdo conmigo; debe leer los comentarios en los enlaces anteriores y ver qué piensa).

Puede usar la función ‘enlace’, también conocida como postLink, que se ejecuta después de colocar la plantilla.

app.directive('myDirective', function() 
  return 
    link: function(scope, elm, attrs)  /*I run after template is put in */ ,
    template: 'Hello'
  
);

Lea esto si planea hacer directivas, es de gran ayuda: http://docs.angularjs.org/guide/directive

Te invitamos a secundar nuestro cometido exponiendo un comentario o dejando una puntuación te estamos eternamente agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *