Heim Web-Frontend js-Tutorial So verwenden Sie AngularJS-Bereiche

So verwenden Sie AngularJS-Bereiche

May 29, 2018 am 11:47 AM
angularjs javascript 作用域

Dieses Mal zeige ich Ihnen, wie Sie den AngularJS-Bereich verwenden und welche Vorsichtsmaßnahmen für die Verwendung des AngularJS-Bereichs gelten. Das Folgende ist ein praktischer Fall, werfen wir einen Blick darauf.

Problemeinführung

Nachdem Sie Angular eine Zeit lang verwendet haben, werden Sie im Grunde auf eine Grube wie diese stoßen:

<p ng-controller="TestCtrl">
 <p>{{name}}</p>
 <p ng-if="show">
  <input type="text" ng-model="name">
 </p>
</p>
<script>
function TestCtrl($scope){
  $scope.show = true;
  $scope.name = 'htf';
}
</script>
Nach dem Login kopieren

Binden Sie das p-Element und das input-Element an dieselbe Variable. Sie hätten gedacht, dass sich bei der Eingabe von Inhalten in das Eingabefeld auch der in p angezeigte Inhalt entsprechend ändert.

Dies ist jedoch nicht der Fall, egal wie sich die Elemente in input ändern. p

Wenn wir über den Grund dafür sprechen wollen, müssen wir mit dem Umfang von Angular beginnen.

Bereich

Jede Angular-Anwendung verfügt standardmäßig über einen Root-Bereich $rootScope. Der Root-Bereich befindet sich auf der obersten Ebene und geht von dieser nach unten . Hängende Zielfernrohre auf allen Ebenen.

Normalerweise werden die durch

auf der Seite gebundenen Variablen im entsprechenden Controller definiert. Wenn eine Variable im aktuellen Bereich nicht definiert ist, sucht ng-modelJavaScript über den Prototyp des aktuellen Controllers, bei dem es sich um eine Bereichsvererbung handelt.

Dies ist in zwei Situationen unterteilt.

1. Grundlegende Typvariablen

<p ng-controller="OuterCtrl">
 <p>{{x}}</p>
 <p ng-controller="InnerCtrl">
  <input type="text" ng-model="x">
 </p>
</p>
<script>
function OuterCtrl($scope){
  $scope.x = 'hello';
}
function InnerCtrl($scope){
}
</script>
Nach dem Login kopieren
Nach dem Ausführen werden Sie das gleiche Problem wie am Anfang des Artikels feststellen, aber das draußen hat sich nicht verändert.

Der Grund dafür ist, dass die Variable

nicht in InnerCtrl definiert ist. Beim Abrufen des Werts wird entlang der Prototypenkette nach dem in x definierten OuterCtrl gesucht und dann Weisen Sie es zu Wenn Sie einen Wert in das Eingabefeld von x eingeben, ändert sich das InnerCtrl in InnerCtrl, hat aber keine Auswirkung auf das x in OuterCtrl. Zu diesem Zeitpunkt sind die beiden x unabhängig. x

Wenn Ihnen die Mühe jedoch nichts ausmacht, können Sie

verwenden, um Basisvariablen im oberen Bereich zu binden und zu beeinflussen: $scope.$parent

<input type="text" ng-model="$parent.x">
Nach dem Login kopieren

2 🎜>Was passiert also, wenn die Bereiche der oberen und unteren Ebene Variablen gemeinsam nutzen möchten?

Die Antwort ist die Verwendung von Referenztypvariablen.

<p ng-controller="OuterCtrl">
 <p>{{x}}</p>
 <p ng-controller="InnerCtrl">
  <input type="text" ng-model="x">
 </p>
</p>
<script>
function OuterCtrl($scope){
  $scope.data = {};
  $scope.data.x = 'hello';
}
function InnerCtrl($scope){
}
</script>
Nach dem Login kopieren

In diesem Fall sind beide

die gleiche Referenz. Änderungen an den Eigenschaften dieses Objekts können auf die zweistufigen Objekte übertragen werden.

data

Bereich in ng-ifWorüber wir zuvor gesprochen haben, ist der Bereich zwischen zwei Ebenen von

Controllern

, was Hängt das mit dem oben genannten Problem zusammen? Sieht es nicht so aus, als gäbe es nur einen Controller? Tatsächlich kann nicht nur der Controller einen Bereich erstellen, auch Anweisungen wie

generieren (implizit) neue Bereiche.

ng-ifUm es zusammenzufassen:

,

, ng-<a href="http://www.php.cn/wiki/137.html" target="_blank"> Einschließen <code>ng-if und andere Dinge, die dynamisch eine Schnittstelle erstellen, haben alle ihren eigenen Bereich der ersten Ebene. ng-switchng-<a href="http://www.php.cn/wiki/137.html" target="_blank">include</a> Um variable Mehrdeutigkeiten in der Vorlage zu vermeiden, sollten Sie daher im Entwicklungsprozess so oft wie möglich Benennungsqualifikationen verwenden, z. B.

. Die Möglichkeit einer Mehrdeutigkeit ist viel geringer als bei einem separaten

. data.xxIch glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

So verwenden Sie Koa2, um WeChat QR-Code-Scan-Zahlungen zu entwickeln


So verwenden Sie AngularJS zur Implementierung Tab-Seiten-Tab-Umschaltung

Das obige ist der detaillierte Inhalt vonSo verwenden Sie AngularJS-Bereiche. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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)

Verwendung der Typedef-Struktur in der C-Sprache Verwendung der Typedef-Struktur in der C-Sprache May 09, 2024 am 10:15 AM

typedef struct wird in der C-Sprache zum Erstellen von Strukturtypaliasen verwendet, um die Verwendung von Strukturen zu vereinfachen. Es weist einem neuen Datentyp ein Alias ​​auf eine vorhandene Struktur zu, indem es den Strukturalias angibt. Zu den Vorteilen gehören verbesserte Lesbarkeit, Wiederverwendung von Code und Typprüfung. Hinweis: Die Struktur muss vor der Verwendung eines Alias ​​definiert werden. Der Alias ​​muss im Programm eindeutig sein und nur innerhalb des Bereichs gültig sein, in dem er deklariert ist.

So lösen Sie die in Java erwartete Variable So lösen Sie die in Java erwartete Variable May 07, 2024 am 02:48 AM

Variablenerwartungsausnahmen in Java können gelöst werden durch: Initialisierung von Variablen; Verwendung von Nullwerten; Verwendung von Überprüfungen und Zuweisungen;

Vor- und Nachteile von Verschlüssen in js Vor- und Nachteile von Verschlüssen in js May 10, 2024 am 04:39 AM

Zu den Vorteilen von JavaScript-Abschlüssen gehören die Aufrechterhaltung des variablen Bereichs, die Aktivierung von modularem Code, die verzögerte Ausführung und die Ereignisbehandlung. Zu den Nachteilen zählen Speicherverluste, erhöhte Komplexität, Leistungsaufwand und Auswirkungen der Bereichskette.

Was bedeutet include in c++? Was bedeutet include in c++? May 09, 2024 am 01:45 AM

Die Präprozessoranweisung #include in C++ fügt den Inhalt einer externen Quelldatei in die aktuelle Quelldatei ein und kopiert ihren Inhalt an die entsprechende Stelle in der aktuellen Quelldatei. Wird hauptsächlich zum Einschließen von Header-Dateien verwendet, die im Code benötigte Deklarationen enthalten, z. B. #include <iostream>, um Standard-Eingabe-/Ausgabefunktionen einzubinden.

C++-Smartpointer: eine umfassende Analyse ihres Lebenszyklus C++-Smartpointer: eine umfassende Analyse ihres Lebenszyklus May 09, 2024 am 11:06 AM

Lebenszyklus von C++-Smartpointern: Erstellung: Smartpointer werden erstellt, wenn Speicher zugewiesen wird. Eigentumsübertragung: Übertragen Sie das Eigentum durch einen Umzugsvorgang. Freigabe: Speicher wird freigegeben, wenn ein Smart Pointer den Gültigkeitsbereich verlässt oder explizit freigegeben wird. Objektzerstörung: Wenn das Objekt, auf das gezeigt wird, zerstört wird, wird der intelligente Zeiger zu einem ungültigen Zeiger.

Können die Definition und der Aufruf von Funktionen in C++ verschachtelt werden? Können die Definition und der Aufruf von Funktionen in C++ verschachtelt werden? May 06, 2024 pm 06:36 PM

Dürfen. C++ erlaubt verschachtelte Funktionsdefinitionen und Aufrufe. Externe Funktionen können integrierte Funktionen definieren und interne Funktionen können direkt innerhalb des Bereichs aufgerufen werden. Verschachtelte Funktionen verbessern die Kapselung, Wiederverwendbarkeit und Bereichskontrolle. Interne Funktionen können jedoch nicht direkt auf lokale Variablen externer Funktionen zugreifen, und der Rückgabewerttyp muss mit der Deklaration der externen Funktion übereinstimmen. Interne Funktionen können nicht selbstrekursiv sein.

Es gibt mehrere Situationen, auf die dies in js hinweist Es gibt mehrere Situationen, auf die dies in js hinweist May 06, 2024 pm 02:03 PM

Zu den Zeigertypen gehören in JavaScript: 1. Globales Objekt; 3. Konstruktoraufruf; 5. Pfeilfunktion (erbt dies); Darüber hinaus können Sie mit den Methoden bind(), call() und apply() explizit festlegen, worauf dies hinweist.

Der Unterschied zwischen let und var in vue Der Unterschied zwischen let und var in vue May 08, 2024 pm 04:21 PM

In Vue gibt es beim Deklarieren von Variablen zwischen let und var einen Unterschied im Gültigkeitsbereich: Gültigkeitsbereich: var hat einen globalen Gültigkeitsbereich und let hat einen Gültigkeitsbereich auf Blockebene. Bereich auf Blockebene: var erstellt keinen Bereich auf Blockebene, let erstellt einen Bereich auf Blockebene. Neudeklaration: var ermöglicht die Neudeklaration von Variablen im gleichen Bereich, let jedoch nicht.

See all articles