Eine kurze Diskussion des $injector-Objekts in Angular
In diesem Artikel lernen wir etwas über Angulardas Abhängigkeitsinjektionsobjekt $injector. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
$injector ist eigentlich ein IOC-Container, der viele Module und Dienste enthält, die wir über .module() und $provide erstellen. Der $injector-Dienst bietet Zugriff auf das Abhängigkeitsinjektorobjekt. Natürlich können wir auch angle.injector() aufrufen, um den Injektor zu erhalten. [Verwandte Empfehlung: „Angular Tutorial“]
var injector1 = angular.injector(["myModule","herModule"]); //获得myModule和herModule模块下的注入器实例
angular.injector() kann mehrmals aufgerufen werden und gibt jedes Mal ein neu erstelltes Injektorobjekt zurück, sodass der von uns selbst erstellte myInjector und der von Angular automatisch erstellte $injector dies nicht tun das gleiche Objekt.
var injector1 = angular.injector(["myModule","herModule"]); var injector2 = angular.injector(["myModule","herModule"]); alert(injector1 == injector2);//false
Häufig verwendete Methoden von $injector
Rufen Sie die Instanz des Dienstes basierend auf dem Namen über $injector.get('serviceName') ab und rufen Sie alle Abhängigkeiten von xxx über $injector.annotate('xxx' ab) ).
var app = angular.module("myApp",[]); app.factory("hello1",function(){ return { hello:function(){ console.log("hello1 service"); } } }); app.factory("hello2",function(){ return { hello:function(){ console.log("hello2 service"); } } }); var $injector = angular.injector(['myApp']); console.log(angular.equals($injector.get('$injector'),$injector));//true var myCtrl2 = function($scope,hello1,hello2){ $scope.hello = function(){ hello1.hello(); hello2.hello(); } } myCtrl2.$injector = ['hello1','hello2']; app.controller("myCtrl2", myCtrl2); console.log($injector.annotate(myCtrl2));//["$scope","hello1","hello2"]
Drei Möglichkeiten, Abhängigkeiten in Angular zu deklarieren
Wenn wir die Funktion .controller() verwenden, wird der Dienst $controller aufgerufen, und unten wird die Funktion invoke() des Dienstes $injector aufgerufen Die zum Erstellen des Controllers verwendete Funktion invoke() ist dafür verantwortlich, zu analysieren, welche Parameter an den Controller übergeben werden müssen, und die Funktion auszuführen, sodass die unterste Ebene tatsächlich die folgenden drei Möglichkeiten zum Deklarieren von Abhängigkeiten verwendet.
// 创建myModule模块、注册服务 var myModule = angular.module('myModule', []); myModule.service('myService', function() { this.my = 0; }); // 获取injector var injector = angular.injector(["myModule"]); // 第一种inference(推断) injector.invoke(function(myService){alert(myService.my);}); // 第二种annotation (注入) function explicit(serviceA) {alert(serviceA.my);}; explicit.$inject = ['myService']; injector.invoke(explicit); // 第三种inline (内联) injector.invoke(['myService', function(serviceA){alert(serviceA.my);}]);
$scope-Objekt
Da $scope lokal und kein Dienst ist, unterscheidet sich die Art und Weise, wie Angular es verwendet, von der Art und Weise, wie der Dienst es verwendet. Um die $scope-Variable korrekt einzufügen, finden Sie hier eine theoretische Übung :
$injector.invoke(function ($scope, $http) { //在这里使用$scope,$http }, null, {$scope: {}});
$rootScope-Objekt
$rootScope wird automatisch erstellt, wenn AngularJS ein Modul lädt. Jedes Modul hat nur 1 RootScope. Sobald rootScope erstellt wurde, wird es in Form eines Dienstes zu $injector hinzugefügt. Das heißt, der Root-Bereich eines Moduls kann über $injector.get("$rootScope") abgerufen werden.
// 新建一个模块 var module = angular.module("app",[]); // true说明$rootScope确实以服务的形式包含在模块的injector中 var hasNgInjector = angular.injector(['app','ng']); console.log("has $rootScope=" + hasNgInjector.has("$rootScope"));//true // 获取模块相应的injector对象,不获取ng模块中的服务 // 不依赖于ng模块,无法获取$rootScope服务 var noNgInjector = angular.injector(['app']); console.log("no $rootScope=" + noNgInjector.has("$rootScope"));//false // 获取angular核心的ng模块 var ngInjector = angular.injector(['ng']); console.log("ng $rootScope=" + ngInjector.has("$rootScope"));//true
Weitere Programmierkenntnisse finden Sie unter: Programmiervideo! !
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion des $injector-Objekts in Angular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Dieser Artikel setzt das Erlernen von Angular fort, führt Sie zum Verständnis der Metadaten und Dekoratoren in Angular und erläutert kurz deren Verwendung. Ich hoffe, dass er für alle hilfreich ist!

Angular.js ist eine frei zugängliche JavaScript-Plattform zum Erstellen dynamischer Anwendungen. Es ermöglicht Ihnen, verschiedene Aspekte Ihrer Anwendung schnell und klar auszudrücken, indem Sie die Syntax von HTML als Vorlagensprache erweitern. Angular.js bietet eine Reihe von Tools, die Sie beim Schreiben, Aktualisieren und Testen Ihres Codes unterstützen. Darüber hinaus bietet es viele Funktionen wie Routing und Formularverwaltung. In dieser Anleitung wird erläutert, wie Angular auf Ubuntu24 installiert wird. Zuerst müssen Sie Node.js installieren. Node.js ist eine JavaScript-Ausführungsumgebung, die auf der ChromeV8-Engine basiert und es Ihnen ermöglicht, JavaScript-Code auf der Serverseite auszuführen. In Ub sein

Kennen Sie Angular Universal? Es kann dazu beitragen, dass die Website eine bessere SEO-Unterstützung bietet!

Wie verwende ich den Monaco-Editor in Angular? Der folgende Artikel dokumentiert die Verwendung des Monaco-Editors in Angular, der kürzlich in einem Unternehmen verwendet wurde. Ich hoffe, dass er für alle hilfreich sein wird!

In diesem Artikel erfahren Sie, wie Sie mit Angular in Kombination mit ng-zorro schnell ein Backend-System entwickeln. Ich hoffe, dass er für alle hilfreich ist.

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Angular-Statusmanagers NgRx und stellt Ihnen die Verwendung von NgRx vor. Ich hoffe, er wird Ihnen hilfreich sein!

Mit der rasanten Entwicklung des Internets wird auch die Front-End-Entwicklungstechnologie ständig verbessert und iteriert. PHP und Angular sind zwei Technologien, die in der Frontend-Entwicklung weit verbreitet sind. PHP ist eine serverseitige Skriptsprache, die Aufgaben wie die Verarbeitung von Formularen, die Generierung dynamischer Seiten und die Verwaltung von Zugriffsberechtigungen übernehmen kann. Angular ist ein JavaScript-Framework, mit dem Single-Page-Anwendungen entwickelt und komponentenbasierte Webanwendungen erstellt werden können. In diesem Artikel erfahren Sie, wie Sie PHP und Angular für die Frontend-Entwicklung verwenden und wie Sie diese kombinieren

Die Authentifizierung ist einer der wichtigsten Teile jeder Webanwendung. In diesem Tutorial werden tokenbasierte Authentifizierungssysteme und ihre Unterschiede zu herkömmlichen Anmeldesystemen erläutert. Am Ende dieses Tutorials sehen Sie eine voll funktionsfähige Demo, die in Angular und Node.js geschrieben wurde. Traditionelle Authentifizierungssysteme Bevor wir zu tokenbasierten Authentifizierungssystemen übergehen, werfen wir einen Blick auf traditionelle Authentifizierungssysteme. Der Benutzer gibt seinen Benutzernamen und sein Passwort im Anmeldeformular ein und klickt auf „Anmelden“. Nachdem Sie die Anfrage gestellt haben, authentifizieren Sie den Benutzer im Backend, indem Sie die Datenbank abfragen. Wenn die Anfrage gültig ist, wird eine Sitzung mit den aus der Datenbank erhaltenen Benutzerinformationen erstellt und die Sitzungsinformationen werden im Antwortheader zurückgegeben, sodass die Sitzungs-ID im Browser gespeichert wird. Bietet Zugriff auf Anwendungen, die unterliegen
