Heim > Web-Frontend > js-Tutorial > Wie teile ich $scope-Daten zwischen Staaten im AngularJS-UI-Router ohne Dienste?

Wie teile ich $scope-Daten zwischen Staaten im AngularJS-UI-Router ohne Dienste?

Susan Sarandon
Freigeben: 2024-11-23 05:16:09
Original
427 Leute haben es durchsucht

How to Share $scope Data Between States in AngularJS UI-Router Without Services?

Teilen von $scope-Daten zwischen Zuständen im AngularJS-UI-Router

In AngularJS-Anwendungen, die UI-Router für die Zustandsverwaltung verwenden, gibt es möglicherweise eine Sie müssen $scope-Daten zwischen übergeordneten und untergeordneten Zuständen teilen. Wie können wir dies erreichen, ohne einen Dienst oder komplizierte Beobachter einzusetzen?

Verwendung der Vererbung der Ansichtshierarchie

AngularJS UI-Router bietet die Vererbung von Bereichseigenschaften nur in der untergeordneten Ansicht ist in der übergeordneten Ansicht verschachtelt. Dies bedeutet, dass die Vorlagen der untergeordneten Zustände in der Vorlage der übergeordneten Ansicht verschachtelt sein müssen.

Bedenken Sie beispielsweise die folgenden Zustandsdefinitionen:

.state("main", {
 controller:'mainController',
 url:"/main",
 templateUrl: "main_init.html"
})  
.state("main.1", {
 controller:'mainController',
 parent: 'main',
 url:"/1",
 templateUrl: 'form_1.html'
})  
.state("main.2", {
 controller:'mainController',
 parent: 'main',
 url: "/2",
 templateUrl: 'form_2.html'
})  
Nach dem Login kopieren

In diesem Szenario müssen die Ansichten der Untergeordnete Zustände („form_1.html“ und „form_2.html“) sind in der Ansicht des übergeordneten Zustands („main_init.html“) verschachtelt. Dies ermöglicht die Vererbung von $scope-Eigenschaften vom übergeordneten Status an die untergeordneten Status.

Verwendung von Referenztypen und Punktnotation

Um sicherzustellen, dass Daten gemeinsam genutzt werden, ist dies der Fall Es ist wichtig, einen Referenztyp im $scope des übergeordneten Controllers mithilfe der Punktnotation zu definieren. Zum Beispiel:

controller('mainController', function ($scope) {
  $scope.Model = $scope.Model || {Name : "xxx"};
})
Nach dem Login kopieren

Durch die Verwendung der Punktnotation stellen wir sicher, dass $scope.Model ein Referenztyp ist. Wenn in einem untergeordneten Zustand darauf zugegriffen wird, handelt es sich um dieselbe Instanz von $scope.Model, die im übergeordneten Zustand erstellt wurde, was den Datenaustausch erleichtert.

Beispiel

Im Beispiel Wie in der Frage angegeben, sind der Hauptcontroller und die untergeordneten Zustände für die Bereichsvererbung korrekt eingerichtet. Das Problem liegt in der unsachgemäßen Verwendung der Punktnotation. Durch Ändern des ng-Modells im untergeordneten Zustand, um auf $scope.Model.Name zu verweisen, wird die Datenfreigabe eingerichtet.

Das obige ist der detaillierte Inhalt vonWie teile ich $scope-Daten zwischen Staaten im AngularJS-UI-Router ohne Dienste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage