2017-09-21 6 views
0

J'ai un composant angularjs, qui a un modèle, un contrôleur, des liaisons, des parties transcrites.Exécution d'une fonction après que le composant est entièrement prêt

je place ce composant dans mon DOM, ainsi que ses attributs:

<mycomponent attr1="x" attr2="y"></mycomponent> 

Ces attributs valeurs seront utilisées par le contrôleur du composant et/ou dans le modèle du composant à transclus quelque part.

Je dois exécuter une fonction après le composant a été complètement créé, à savoir qu'il est modèle a été créé sur le DOM et tous les éléments transclus ont été donné une valeur.

Comment puis-je accomplir cela? J'ai essayé de placer la fonction dans le crochet $ postLink() du contrôleur, cependant quand $ postLink() se déclenche, je vois que la transclusion n'a pas encore été exécutée.

De plus, je n'aime pas avoir à manipuler le contrôleur de composants, puisque le composant est très général, je le place sur plusieurs endroits dans le DOM, et seulement un d'entre eux devrait exécuter cette fonction après sa création complète.

Répondre

0

Pour AngularJS 1 application, il y a deux façons de l'exécution d'une fonction après l'initialisation DOM:

  1. Vous pouvez utiliser $ délai d'attente sans délai - $ timeout (fonction() {/ * Invoquez votre fonction */});
  2. Ou Utilisez .ready() qui est fourni par jqLite
1

de angulaire angulaire 2:

ngAfterViewInit()

Respond après angulaire initialise vues et les vues de l'enfant du composant . Appelé une fois après le premier ngAfterContentChecked(). Un crochet uniquement pour les composants.

en Jquery:

$(document).ready(function() { 
     console.log("document loaded"); 
    }); 

en javascript:

window.onload(function(){ 
//here 
}); 

dans angular1:

angular.element(document).ready(function() { 
     //content here 
    });