Heim > Web-Frontend > js-Tutorial > Eine kurze Diskussion über die Beziehung zwischen Controllern, Diensten und Anweisungen in Angular

Eine kurze Diskussion über die Beziehung zwischen Controllern, Diensten und Anweisungen in Angular

青灯夜游
Freigeben: 2021-05-13 10:59:25
nach vorne
2643 Leute haben es durchsucht

Dieser Artikel stellt Ihnen die Beziehung zwischen eckigenControllern, Diensten und Anweisungen vor. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Eine kurze Diskussion über die Beziehung zwischen Controllern, Diensten und Anweisungen in Angular

【Verwandte Empfehlung: „angular Tutorial“】

Insgesamt ist die Beziehung zwischen diesen drei Komponenten wie folgt:

  • Der Dienst ist für das Abrufen und Speichern von Daten vom Remote-Server verantwortlich.
  • Auf Diensten basierende Controller stellen Daten und Funktionen für die Bereichshierarchie von Angular bereit.
  • Auf Diensten und Controllern basierende Anweisungen interagieren direkt mit DOM-Elementen (Document Object Model).

Da der Controller nicht beim Abhängigkeitsinjektor registriert ist, können der Controller und der Dienst den Controller nicht als Abhängigkeit auflisten.

<div ng-controller="MyController"></div>
Nach dem Login kopieren
var m = angular.module(&#39;myModule&#39;);
 
m.factory(&#39;myService&#39;, function() {
    return { answer: 42 };
});
 
m.controller(&#39;MyController&#39;, function(myService) {
    //使用myService
});
 
m.controller(&#39;MyController2&#39;, function(MyController) {
    //错误:使用控制器注册
});
 
m.factory(&#39;myService2&#39;, function(MyController) {
    //错误:使用控制器注册
});
Nach dem Login kopieren

Jeder NG-Controller wird einmal instanziiert, und der Dienst wird nur einmal instanziiert, das heißt, der Dienst ist ein Singleton.

Controller können lokale Objekte als Abhängigkeiten auflisten, z. B. $scope, aber Dienste können lokale Objekte nicht als Abhängigkeiten auflisten.

m.factory(&#39;myService&#39;, function($scope) {
    //错误:$scope未使用依赖注入器进行注册
});
Nach dem Login kopieren

Aus diesem Grund ist es in Angular der Controller, der JavaScript-Daten und -Funktionen für HTML verfügbar macht, und nicht der Dienst: Der Controller hat Zugriff auf $scope.

Anweisungen können einen zugeordneten Controller haben und Dienste können als Abhängigkeiten aufgelistet werden. Aber Controller und Dienste können Anweisungen nicht als Abhängigkeiten auflisten.

angular.module(&#39;stockDogApp&#39;)
  .directive(&#39;stockTable&#39;, function() {
  	return {
  		template: &#39;Views/templates/stock-table.html&#39;,
  		restrict: &#39;E&#39;,
  		scope: {
  			watchlist: &#39;=&#39;
  		},
  		controller: function ($scope) {
  			//...
  		}
  	}
  });
Nach dem Login kopieren

Die Direktive kann auch ein require-Attribut haben, das verwendet wird, um sicherzustellen, dass der Geltungsbereich der Direktive immer ein Nachkomme des Geltungsbereichs einer anderen Direktive sein muss.

angular.module(&#39;stockDogApp&#39;)
  .directive(&#39;stockRow&#39;, function($timeout, QuoteService) {
  	return {
  		restrict: &#39;A&#39;,
  		require: &#39;^stockTable&#39; //stockTable指令,^表示在父作用域中寻找
  		scope: {
  			stock: &#39;=&#39;,
  			isLast: &#39;=&#39;
  		},
  		link: function ($scope, $element, $attrs, stockTableCtrl) {
  			//..
  		}	
  	}
  });
Nach dem Login kopieren

Die Direktivenoption require erfordert, dass der Gültigkeitsbereich der stockRow-Direktive ein Nachkomme des Gültigkeitsbereichs der stockTable-Direktive sein muss und auf den Controller der instanziierten stockTable-Direktive zugreifen kann, der der vierte Parameter der Link-Funktion ist. Wenn die beiden Direktiven zusammen verwendet werden müssen, ist die Option „Require“-Direktive das richtige Werkzeug für diese Aufgabe.

Hinweis: Bitte beachten Sie „Erweiterte Programmierung mit AngularJS“ nur zur Erinnerung.

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung! !

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über die Beziehung zwischen Controllern, Diensten und Anweisungen in Angular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage