2017-09-21 4 views
0

Ich habe eine Angularjs-Komponente, die eine Vorlage, einen Controller, einige Bindungen, einige übersetzte Teile hat.Eine Funktion ausführen, nachdem die Komponente vollständig bereit ist

Ich stelle diese Komponente in meinem DOM, zusammen mit seinen Attributen:

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

Diese Attribute Werte werden durch die Komponente des Controllers und/oder in der Vorlage Komponente verwendet werden irgendwo transkludiert werden.

Ich brauche eine Funktion nach die Komponente wurde vollständig erstellt laufen, das heißt es ist Vorlage wird erstellt wurde Wert auf den DOM und all transkludiert Elementen gegeben worden.

Wie kann ich das erreichen? Ich habe versucht, die Funktion in den $ postLink() - Hook des Controllers zu platzieren, aber wenn $ postLink() ausgelöst wird, sehe ich, dass die Transclusion noch nicht gelaufen ist.

Darüber hinaus mag ich es nicht, mit Controller der Komponente zu stören, da die Komponente sehr allgemein ist, lege ich es an mehreren Stellen im DOM, und nur einer von ihnen sollte diese Funktion nach seiner vollständigen Erstellung ausführen.

Antwort

0

Für AngularJS 1 Anwendung gibt es zwei Möglichkeiten, eine Funktion nach DOM Initialisierung ausgeführt wird:

  1. Sie $ Timeout ohne Verzögerung verwenden können - $ timeout (function() {/ * Rufen Sie Ihre Funktion */});
  2. oder benutzen Sie .ready(), die
  3. von Angular des jqLite vorgesehen ist
1

In Angular 2:

ngAfterViewInit()

Respond nach Angular der Komponente Ansichten und Kind Ansichten initialisiert . Einmal nach dem ersten ngAfterContentChecked() aufgerufen. Ein Nur-Komponenten-Haken.

in Jquery:

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

in JavaScript:

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

in angular1:

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