Heim > Web-Frontend > js-Tutorial > Wie teile ich Daten zwischen AngularJS-UI-Router-Zuständen ohne Dienste oder Beobachter?

Wie teile ich Daten zwischen AngularJS-UI-Router-Zuständen ohne Dienste oder Beobachter?

Susan Sarandon
Freigeben: 2024-11-08 19:29:02
Original
992 Leute haben es durchsucht

How to Share Data Between AngularJS UI-Router States Without Services or Watchers?

Teilen von $scope-Daten zwischen AngularJS-UI-Router-Zuständen ohne Dienste oder Watcher

In UI-Router kann es schwierig sein, Daten zwischen den $scope eines zu teilen Hauptcontroller und seine untergeordneten Zustände, ohne auf Dienste oder Beobachter im übergeordneten Controller angewiesen zu sein.

Lösung:

Die Der Schlüssel liegt im Verständnis der Beziehung zwischen AngularJS-Bereichen und UI-Router-Ansichten:

  • Bereichsvererbung nur nach Ansichtshierarchie:Bereiche werden in der Statuskette nur dann vererbt, wenn die Statusansichten dies auch tun verschachtelt.
  • Geltungsbereiche verstehen: Untergeordnete Bereiche sind normalerweise prototypisch Von übergeordneten Bereichen erben. Verwendung von „.“ Notation (z. B. Model.PropertyName) stellt diese Vererbung sicher.

Technische Implementierung:

  1. Verschachtelte Ansichten definieren: Stellen Sie sicher, dass untergeordnete Statusansichten verschachtelt sind innerhalb der übergeordneten Ansicht.
  2. Referenztyp verwenden Werte:Verwenden Sie in Ihrem $scope-Modell Objekte oder Referenzen, die als Referenz übergeben werden, anstelle von primitiven Werten.
  3. Verwenden Sie die Punktnotation:Verwenden Sie in Ihren ng-Modelldefinitionen Punktnotation, um die prototypische Vererbung sicherzustellen (z. B. Model.PropertyName anstelle von PropertyName).

Beispiel:

Betrachten Sie die folgende UI-Router-Statusdefinition:

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

Initialisieren Sie im mainController das gemeinsam genutzte Datenmodell wie folgt:

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

Verwenden Sie in Ihren untergeordneten Statusvorlagen ng-model mit Punktnotation, um auf die freigegebenen Elemente zuzugreifen Daten:

<input type="text" ng-model="Model.Name">
Nach dem Login kopieren

Indem Sie diese Schritte befolgen, können Sie Daten effektiv zwischen $scopes in UI-Router-Zuständen austauschen, ohne dass Dienste oder Beobachter in übergeordneten Controllern erforderlich sind.

Das obige ist der detaillierte Inhalt vonWie teile ich Daten zwischen AngularJS-UI-Router-Zuständen ohne Dienste oder Beobachter?. 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