it-swarm.com.de

Mit welcher Methode kann ich bootstrap mein AngularJS manuell ausführen?

Ich habe folgendes gesehen:

angular.bootstrap(document, ['TodoApp']);
angular.bootstrap(angular.element("body")[0], ['TodoApp']);

Auch die AngularJS-Dokumentation erwähnt dies, was ich nicht wirklich verstehe.

   angular.element(document).ready(function() {
     angular.bootstrap(document);
   });

Gibt es einen Unterschied zwischen diesen Methoden? Was genau macht die letzte Methode aus den Angular docs? Ist eine bessere als die andere?

43
user1464139

Sie sind ungefähr gleich, mit ein paar Unterschieden:


angular.bootstrap(document, ['TodoApp']);

Dies funktioniert, wenn Sie Ihre Skripte am Ende der Seite geladen haben (anstatt in der Kopfzeile).

Andernfalls wird das DOM beim Booten der App nicht geladen (es muss keine Vorlage kompiliert werden, die Anweisungen haben keine Auswirkung).

Dieser funktioniert: plnkr

Dieser tut nicht: plnkr


angular.bootstrap(angular.element("body")[0], ['TodoApp']);

Wie zuvor, mit body als Stammverzeichnis der Anwendung. Es wird ein Selektor verwendet, der in jqLite nicht verfügbar ist. Daher muss vollständige jQuery in der App enthalten sein.

Ich bin nicht sicher, was der Vorteil der Verwendung von body anstelle von document ist, habe aber wahrscheinlich etwas mit e2e testing zu tun, wie in diesem Abschnitt erläutert. Kommentar

plknr


angular.element(document).ready(function() {
  angular.bootstrap(document);
});

Dieser wartet tatsächlich auf das Laden des DOM , sodass er auch dann funktioniert, wenn Sie Ihre Skripte in den Header aufnehmen.

Dies ist im Grunde dasselbe wie jQueries $(document).ready(, verwendet jedoch jqLites angular.element.


Im letzten Beispiel werden keine Module an die Funktion bootstrap übergeben. Wahrscheinlich müssen Sie Ihr Hauptmodul deklarieren, es sei denn, Ihre App besteht nur aus Controllern im globalen Namespace.

Die letzte Option sieht also wie folgt aus, um den beiden anderen ähnlich zu sein:

angular.element(document).ready(function() {
  angular.bootstrap(document, ['TodoApp']);
});

plknr

Ich denke, dass die sicherste Wette die meiste Zeit diesen letzten Ansatz verwendet.

64
garst