Heim Web-Frontend js-Tutorial Detaillierte Erläuterung der Methode $apply() in angleJS_AngularJS

Detaillierte Erläuterung der Methode $apply() in angleJS_AngularJS

May 16, 2016 pm 04:21 PM
angularjs

Für mich, einen absoluten Neuling im Frontend, weiß ich noch wenig über Javascript. Wenn ich direkt mit Angular JS beginnen möchte, stoße ich auf großen Widerstand. Ich glaube jedoch, dass selbst menschenfeindliche Designs kein großes Problem darstellen werden, solange wir hart arbeiten.

Okay, kein Unsinn mehr. Um zu verstehen, was Angular JS ist, habe ich mit Scope begonnen. Was ist Scope? Ausleihe einer Passage aus dem offiziellen Dokument:

Code kopieren Der Code lautet wie folgt:

„Bereich ist ein Objekt, das auf das Anwendungsmodell verweist. Es ist ein Ausführungskontext für Ausdrücke. Bereiche sind in einer hierarchischen Struktur angeordnet, die die DOM-Struktur der Anwendung nachahmt. Bereiche können Ausdrücke überwachen und Ereignisse weitergeben.“

Nachdem ich dies gelesen habe, habe ich in Analogie zu anderen Programmiersprachen das Gefühl, dass der Bereich wie der Bereich des Datenmodells ist und den Kontext für die Ausführung von Ausdrücken bereitstellt. Lassen Sie es uns zunächst so verstehen.

Merkmale des Geltungsbereichs

Als nächstes wollen wir sehen, welche Funktionen Scope hat?

Scope stellt die Methode $watch zur Überwachung von Modelländerungen bereit.
Scope stellt die Methode $apply zur Weitergabe von Modelländerungen bereit.
Der Bereich kann vererbt werden, um verschiedene Anwendungskomponenten und Eigenschaftenzugriffsberechtigungen zu isolieren.
Der Bereich bietet Kontext für die Auswertung von Ausdrücken.

In Bezug auf diese vier Funktionen sind der erste, dritte und vierte Punkt nicht schwer zu verstehen, da ich zuvor ActionScript, C und Java studiert habe, aber der zweite Punkt fühlt sich etwas unklar an. Ganz nach dem Prinzip, nach Antworten zu fragen, habe ich einige Dinge trotzdem über Google gefunden. Erfahrene Veteranen tippen bitte auf die Steine!

Origin Javascript

Zunächst einmal scheint Scope.apply() auf den ersten Blick eine gewöhnliche Methode zum Aktualisieren von Bindungen zu sein. Aber denken Sie noch ein wenig darüber nach: Warum brauchen wir es? Wann wird es normalerweise verwendet? Um diese beiden Probleme zu verstehen, müssen wir mit Javascript beginnen. In Javascript-Code wird es in einer bestimmten Reihenfolge ausgeführt. Wenn ein Codefragment an der Reihe ist, führt der Browser nur das aktuelle Fragment aus und führt keine weiteren Aktionen aus. Manchmal bleiben einige Webseiten, die nicht sehr gut gemacht sind, hängen, nachdem sie auf etwas geklickt haben. Die Art und Weise, wie Javascript funktioniert, ist einer der Gründe für dieses Phänomen! Unten haben wir einen Code, um es zu fühlen:

Code kopieren Der Code lautet wie folgt:

var button = document.getElementById('clickMe');
FunktionstasteClicked () {
warning('auf die Schaltfläche wurde geklickt');
}
button.addEventListener('click', buttonClicked);
Funktion timerComplete () {
Alert('Timer abgeschlossen');
}
setTimeout(timerComplete, 5000);

Suchen Sie beim Laden von Javascript-Code zunächst nach einer Schaltfläche mit der ID „clickMe“, fügen Sie dann einen Listener hinzu und legen Sie dann ein Timeout fest. Warten Sie 5 Sekunden und ein Dialogfeld wird angezeigt. Wenn Sie die Seite aktualisieren und sofort auf die Schaltfläche „ClickMe“ klicken, wird ein Dialogfeld angezeigt. Wenn Sie nicht auf „OK“ klicken, kann die Funktion „timerComplete“ nie ausgeführt werden.

So aktualisieren Sie Bindungen

Okay, nachdem wir über einige scheinbar irrelevante Dinge gesprochen haben, kehren wir zum Thema zurück. Woher weiß Angular JS, wann sich Daten ändern und die Seite aktualisiert werden muss? Der Code muss wissen, wann die Daten geändert wurden, aber es gibt derzeit keine Möglichkeit, direkt zu benachrichtigen, dass sich die Daten eines Objekts geändert haben (obwohl ECMAScript 5 versucht, dieses Problem zu lösen, befindet es sich noch im experimentellen Stadium). Zu den derzeit eher Mainstream-Strategien gehören die folgenden zwei Lösungen. Eine besteht darin, ein spezielles Objekt zu verwenden, sodass alle Daten nur durch Aufrufen der Methode des Objekts festgelegt werden können, anstatt sie direkt über die Eigenschaft anzugeben. Auf diese Weise können alle Änderungen aufgezeichnet werden und Sie wissen, wann die Seite aktualisiert werden muss. Der Nachteil dabei ist, dass wir ein spezielles Objekt erben müssen. Die Zuweisung kann nur über object.set('key', 'value') statt über object.key=value erfolgen. In Frameworks wie EmberJS und KnockoutJS geschieht dies (obwohl ich noch nie damit in Berührung gekommen bin – peinlich). Die andere Methode ist die von Angular JS übernommene Methode, die nach der Ausführung jeder Javascript-Code-Ausführungssequenz prüft, ob Datenänderungen vorliegen. Dies erscheint ineffizient und kann sogar die Leistung ernsthaft beeinträchtigen. Angular JS verwendet jedoch einige clevere Methoden, um dieses Problem zu lösen (es wurde noch nicht untersucht und ist noch nicht klar). Dies hat den Vorteil, dass wir jedes beliebige Objekt beliebig verwenden können, es keine Einschränkungen bei der Zuweisungsmethode gibt und wir auch Änderungen in den Daten erkennen können.
Bei dieser von Angular JS übernommenen Lösung geht es uns darum, wann sich die Daten ändern, und hier kommt „scope.apply()“ zum Einsatz. Die Überprüfung, ob sich die gebundenen Daten geändert haben, wird tatsächlich von Scope.digest () durchgeführt. Wir rufen diese Methode jedoch fast nie direkt auf, sondern rufen die Methode Scope.apply () auf, da in Scope die Methode .apply () aufgerufen wird Scope.digest()-Methode. Die Methode „scope.apply()“ nimmt eine Funktion oder einen Ausdruck, führt sie aus und ruft schließlich die Methode „scope.digest()“ auf, um Bindungen oder Watcher zu aktualisieren.

Wann sollte $apply() verwendet werden?

Es ist immer noch die gleiche Frage: Wann müssen wir die apply()-Methode aufrufen? Die Situation ist sehr selten. Tatsächlich ist fast unser gesamter Code in Scope.apply () eingeschlossen, z. B. ng-click, Controller-Initialisierung, http-Rückruffunktion usw. In diesen Fällen müssen wir es nicht selbst aufrufen. Tatsächlich können wir es nicht selbst aufrufen, da sonst der Aufruf der apply()-Methode innerhalb der apply()-Methode einen Fehler auslöst. Wir müssen es wirklich verwenden, wenn wir den Code in einer neuen Ausführungssequenz ausführen müssen, und genau dann, wenn diese neue Ausführungssequenz nicht durch die Angular-JS-Bibliotheksmethode erstellt wird, müssen wir zu diesem Zeitpunkt den Bereich für den Code verwenden. apply() umschlossen. Lassen Sie uns dies anhand eines Beispiels erklären:

Code kopieren Der Code lautet wie folgt:

{{message}}

Code kopieren Der Code lautet wie folgt:

functionStrg($scope) {
$scope.message = „2000 ms auf Aktualisierung warten“; setTimeout(function () {
​ ​$scope.message="Timeout aufgerufen!";
// AngularJS ist sich der Aktualisierung auf $scope
nicht bewusst }, 2000);
}

Nachdem der obige Code ausgeführt wurde, wird auf der Seite Folgendes angezeigt: Warten 2000 ms auf Aktualisierung. Anscheinend wird die Datenaktualisierung von Angular JS nicht bemerkt.

Als nächstes modifizieren wir den Javascript-Code leicht und umschließen ihn mit „scope.apply()“.

Code kopieren Der Code lautet wie folgt:
functionStrg($scope) {
$scope.message = „2000 ms auf Aktualisierung warten“; setTimeout(function () {
​ ​$scope.$apply(function () {
​ ​ ​$scope.message="Timeout aufgerufen!";
});
}, 2000);
}

Der Unterschied besteht dieses Mal darin, dass auf der Seite zunächst Folgendes angezeigt wird: Warten 2000 ms auf Aktualisierung. Nach 2 Sekunden Wartezeit ändert sich der Inhalt in: Timeout aufgerufen!. Offensichtlich wird die Datenaktualisierung von Angular JS bemerkt.
HINWEIS: Wir sollten dies nicht tun, sondern die von Angular JS bereitgestellte Timeout-Methode verwenden, damit sie automatisch mit der Apply-Methode umschlossen wird.

Wissenschaft ist ein zweischneidiges Schwert
Schauen wir uns abschließend noch einmal die Methoden „scope.apply()“ und „scope.apply(function)“ an! Obwohl Angular JS viel für uns getan hat, haben wir auch einige Chancen verpasst. Sie können es auf einen Blick anhand des folgenden Pseudocodes erkennen:

Code kopieren Der Code lautet wie folgt:

function$apply(expr) {
versuche es mit {
​​return$eval(expr);
} Catch(e) {
​​$ExceptionHandler(e);
} endlich {
​​$root.$digest();
}
}

Es werden alle Ausnahmen abgefangen und nicht erneut ausgelöst. Schließlich wird die Methode $digest() aufgerufen.

Um es zusammenzufassen

Die Methode $apply() kann Angular-JS-Ausdrücke außerhalb des Angular-Frameworks ausführen, z. B. DOM-Ereignisse, setTimeout, XHR oder andere Bibliotheken von Drittanbietern. Das ist erst der Anfang, das Wasser ist noch sehr tief, jeder ist herzlich willkommen, gemeinsam tief zu tauchen!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Die neuesten 5 AngularJS-Tutorials im Jahr 2022, vom Einstieg bis zur Beherrschung Die neuesten 5 AngularJS-Tutorials im Jahr 2022, vom Einstieg bis zur Beherrschung Jun 15, 2017 pm 05:50 PM

Javascript ist eine sehr einzigartige Sprache, was die Organisation des Codes, das Programmierparadigma des Codes und die objektorientierte Theorie betrifft. Die Frage, ob Javascript eine objektorientierte Sprache ist, wird seit langem diskutiert Es gibt offensichtlich schon seit langem eine Antwort. Auch wenn Javascript seit zwanzig Jahren vorherrscht, schauen Sie sich einfach das „Black Horse Cloud Classroom JavaScript Advanced Framework“ an, wenn Sie beliebte Frameworks wie jQuery, Angularjs und sogar React verstehen möchten Design-Video-Tutorial“.

Verwenden Sie PHP und AngularJS, um eine reaktionsfähige Website zu erstellen und ein hochwertiges Benutzererlebnis zu bieten Verwenden Sie PHP und AngularJS, um eine reaktionsfähige Website zu erstellen und ein hochwertiges Benutzererlebnis zu bieten Jun 27, 2023 pm 07:37 PM

Im heutigen Informationszeitalter sind Websites zu einem wichtigen Instrument für Menschen geworden, um Informationen zu erhalten und zu kommunizieren. Eine responsive Website kann sich an verschiedene Geräte anpassen und den Benutzern ein qualitativ hochwertiges Erlebnis bieten, was zu einem Hotspot in der modernen Website-Entwicklung geworden ist. In diesem Artikel erfahren Sie, wie Sie mit PHP und AngularJS eine responsive Website erstellen, um ein qualitativ hochwertiges Benutzererlebnis zu bieten. Einführung in PHP PHP ist eine serverseitige Open-Source-Programmiersprache, die sich ideal für die Webentwicklung eignet. PHP bietet viele Vorteile, z. B. einfache Erlernbarkeit, plattformübergreifende Funktionalität, umfangreiche Toolbibliothek und Entwicklungseffizienz

Erstellen Sie Webanwendungen mit PHP und AngularJS Erstellen Sie Webanwendungen mit PHP und AngularJS May 27, 2023 pm 08:10 PM

Mit der kontinuierlichen Entwicklung des Internets sind Webanwendungen zu einem wichtigen Bestandteil des Informationsaufbaus in Unternehmen und zu einem notwendigen Mittel für Modernisierungsarbeiten geworden. Um die Entwicklung, Wartung und Erweiterung von Webanwendungen zu vereinfachen, müssen Entwickler ein technisches Framework und eine Programmiersprache wählen, die ihren Entwicklungsanforderungen entspricht. PHP und AngularJS sind zwei sehr beliebte Webentwicklungstechnologien. Sie sind serverseitige bzw. clientseitige Lösungen und können die Entwicklungseffizienz und das Benutzererlebnis von Webanwendungen erheblich verbessern. Vorteile von PHPPHP

Verwenden Sie PHP und AngularJS, um eine Online-Dateiverwaltungsplattform zu entwickeln, die die Dateiverwaltung erleichtert Verwenden Sie PHP und AngularJS, um eine Online-Dateiverwaltungsplattform zu entwickeln, die die Dateiverwaltung erleichtert Jun 27, 2023 pm 01:34 PM

Mit der Popularität des Internets nutzen immer mehr Menschen das Netzwerk, um Dateien zu übertragen und zu teilen. Aus verschiedenen Gründen kann die Verwendung herkömmlicher FTP- und anderer Methoden zur Dateiverwaltung jedoch nicht den Anforderungen moderner Benutzer gerecht werden. Daher ist die Einrichtung einer benutzerfreundlichen, effizienten und sicheren Online-Dateiverwaltungsplattform zu einem Trend geworden. Die in diesem Artikel vorgestellte Online-Dateiverwaltungsplattform basiert auf PHP und AngularJS. Sie kann problemlos Dateien hochladen, herunterladen, bearbeiten, löschen und andere Vorgänge ausführen und bietet eine Reihe leistungsstarker Funktionen wie Dateifreigabe, Suche,

Erstellen Sie eine einseitige Webanwendung mit Flask und AngularJS Erstellen Sie eine einseitige Webanwendung mit Flask und AngularJS Jun 17, 2023 am 08:49 AM

Mit der rasanten Entwicklung der Webtechnologie ist die Single Page Web Application (SinglePage Application, SPA) zu einem immer beliebter werdenden Webanwendungsmodell geworden. Im Vergleich zu herkömmlichen mehrseitigen Webanwendungen besteht der größte Vorteil von SPA darin, dass die Benutzererfahrung reibungsloser ist und auch der Rechendruck auf dem Server erheblich reduziert wird. In diesem Artikel stellen wir vor, wie man mit Flask und AngularJS ein einfaches SPA erstellt. Flask ist ein leichter Py

Wie verwende ich AngularJS in der PHP-Programmierung? Wie verwende ich AngularJS in der PHP-Programmierung? Jun 12, 2023 am 09:40 AM

Mit der Popularität von Webanwendungen erfreut sich das Frontend-Framework AngularJS immer größerer Beliebtheit. AngularJS ist ein von Google entwickeltes JavaScript-Framework, das Sie beim Erstellen von Webanwendungen mit dynamischen Webanwendungsfunktionen unterstützt. Andererseits ist PHP für die Backend-Programmierung eine sehr beliebte Programmiersprache. Wenn Sie PHP für die serverseitige Programmierung verwenden, bringt die Verwendung von PHP mit AngularJS dynamischere Effekte auf Ihre Website.

Einführung in die Grundlagen von AngularJS Einführung in die Grundlagen von AngularJS Apr 21, 2018 am 10:37 AM

Der Inhalt dieses Artikels befasst sich mit der grundlegenden Einführung in AngularJS. Jetzt kann ich ihn mit Ihnen teilen.

So verwenden Sie PHP und AngularJS für die Frontend-Entwicklung So verwenden Sie PHP und AngularJS für die Frontend-Entwicklung May 11, 2023 pm 05:18 PM

Mit der Popularität und Entwicklung des Internets wird die Front-End-Entwicklung immer wichtiger. Als Frontend-Entwickler müssen wir verschiedene Entwicklungstools und -technologien verstehen und beherrschen. Unter ihnen sind PHP und AngularJS zwei sehr nützliche und beliebte Tools. In diesem Artikel erklären wir, wie Sie diese beiden Tools für die Frontend-Entwicklung verwenden. 1. Einführung in PHP PHP ist eine beliebte serverseitige Open-Source-Skriptsprache. Sie eignet sich für die Webentwicklung und kann auf Webservern und verschiedenen Betriebssystemen ausgeführt werden. Die Vorteile von PHP sind Einfachheit, Geschwindigkeit und Komfort

See all articles