AngularJS $injector 종속 주입 상세 정보
이런 주입 방식은 매개 변수의 이름이 서비스 이름과 같다는 것을 보증해야 한다.만약 코드가 압축 등의 조작을 거쳐야 한다면 주입 실패를 초래할 것이다.
app.controller("myCtrl1", function($scope,hello1,hello2){
$scope.hello = function(){
hello1.hello();
hello2.hello();
}
});
태그 주입
이런 주입 방식은 의존 수조를 설정해야 한다. 수조 안은 의존하는 서비스 이름이고 함수 매개 변수에서 임의로 매개 변수의 이름을 설정할 수 있지만 순서의 일치성을 확보해야 한다.
var myCtrl2 = function($scope,hello1,hello2){
$scope.hello = function(){
hello1.hello();
hello2.hello();
}
}
myCtrl2.$injector = ['hello1','hello2'];
app.controller("myCtrl2", myCtrl2);
내연식 주입
이런 주입 방식은 두 개의 매개 변수를 직접 전송하는데, 하나는 이름이고, 다른 하나는 하나의 수조이다.이 수조의 마지막 매개 변수는 진정한 방법체이고 다른 것은 모두 의존하는 목표이지만 방법체의 매개 변수 순서와 일치해야 한다(표기 주입과 같다).
app.controller("myCtrl3",['$scope','hello1','hello2',function($scope,hello1,hello2){
$scope.hello = function(){
hello1.hello();
hello2.hello();
}
}]);
$injector에서 자주 사용하는 방법
angular에서 angular를 통과할 수 있습니다.injector () 는 주입기를 얻습니다.
var $injector = angular.injector();
$injector를 통해.get('서비스Name')에서 의존하는 서비스 이름을 얻습니다.
$injector.get('$scope')
$injector를 통해.annotate ('xxx') 는 xxx의 모든 의존 항목을 가져옵니다.
$injector.annotate(xxx)
샘플 코드
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();
console.log(angular.equals($injector.get('$injector'),$injector));//true
console.log(angular.equals($injector.invoke(function($injector) {return $injector;}),$injector));//true
//inferred
// $injector.invoke(function(serviceA){});
app.controller("myCtrl1", function($scope,hello1,hello2){
$scope.hello = function(){
hello1.hello();
hello2.hello();
}
});
//annotated
// function explicit(serviceA) {};
// explicit.$inject = ['serviceA'];
// $injector.invoke(explicit);
var myCtrl2 = function($scope,hello1,hello2){
$scope.hello = function(){
hello1.hello();
hello2.hello();
}
}
myCtrl2.$injector = ['hello1','hello2'];
app.controller("myCtrl2", myCtrl2);
//inline
app.controller("myCtrl3",['$scope','hello1','hello2',function($scope,hello1,hello2){
// app.controller("myCtrl3",['$scope','hello1','hello2',function(a,b,c){
// a.hello = function(){
// b.hello();
// c.hello();
// }
$scope.hello = function(){
hello1.hello();
hello2.hello();
}
}]);
console.log($injector.annotate(myCtrl2));//["$scope","hello1","hello2"]
이상은 AngularJS injector에 대한 자료 정리입니다. 후속으로 관련 자료를 계속 보충해 드리겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.