Ich habe eine Funktion in meinem Controller wie folgt spezifiziert:
%Vor%Ich möchte, dass diese Funktion ausgelöst wird, wenn eine Auswahlbox geändert wurde. Daher wende ich ng-change auf das select-Element wie folgt an:
%Vor%Aber ich möchte auch, dass die Funktion myFunction ausgelöst wird, wenn meine Seite geladen wird. Also dachte ich mir, ich würde meine Funktion in eine IIFE verwandeln:
%Vor%Allerdings wird die Funktion jetzt nur beim Seitenladen und nicht durch ng-change ausgelöst. Ich habe bemerkt, dass wenn ich die Klammern ändere, die Funktion auch durch ng-change ausgelöst wird:
%Vor%Kann jemand erklären, warum das überhaupt zählt?
Vielen Dank!
Es gibt einen großen Unterschied zwischen diesen
%Vor%Und das
%Vor%Weil die erste Zeile das Ergebnis des Funktionsaufrufs zuweist und dann nur speichert, aber keine Funktion speichert.
Der zweite funktioniert wie erwartet, weil Sie die Funktion aufrufen, nachdem Sie sie $scope.myFunction
AKTUALISIEREN
Wie helpermethod in Kommentaren hervorgehoben, ist die erste Zeile kein IIFE, weil Sie die Funktion nicht aufrufen selbst, aber nur das Ergebnis davon.
Ohne all Ihren Code zu sehen, ist es schwer zu sagen. Sie verwenden keine IIFE, Sie führen Ihre eigene Funktion aus und setzen sie auf die Variable $ scope. Ein IIFE lässt es auch nicht beim Laden von Seiten laufen. Anstatt zu versuchen, all das zu korrigieren, verwenden Sie einen Code, der dem folgenden Beispiel ähnelt.
Versuchen Sie, einen Controller in einem IIFE zu erstellen und Ihren HTML-Code so zu aktualisieren:
%Vor%und dein Controller
%Vor%Tags und Links javascript angularjs iife