컨트롤러에서 $ inject 사용을 이해하지 못합니다.
Angular에서 주입하는 것에 대해 완전히 혼란 스럽습니다. 나는 그것을 어디에 사용하고 왜 사용하는지 모른다. 여기에 설명 된대로 공장에서만 사용 됩니까?
myController.$inject = ['$scope','notify'];
여기 notify
에 공장 이름이 있습니다.
이는 코드가 축소 된 후 종속성 주입을 지원하는 한 가지 접근 방식입니다 (최소화를 선택한 경우).
컨트롤러를 선언 할 때 함수는 매개 변수를 사용합니다.
function ($scope, notify)
코드를 축소하면 함수는 다음과 같습니다.
function (a, b)
AngularJS는 DI를 추론하기 위해 함수 매개 변수 이름을 사용하므로 AngularJS가 a
또는 에 대해 알지 못하기 때문에 코드가 손상됩니다 b
.
이 문제를 해결하기 위해 해당 문제에 대한 컨트롤러 (또는 기타 서비스 / 공장 등)를 선언하는 추가 방법을 제공했습니다.
컨트롤러의 경우
$inject
메서드를 사용합니다. 여기서 컨트롤러 함수의 매개 변수에 매핑되는 리터럴 배열을 전달합니다. 따라서 제공하는 경우['$scope', 'notify']
그러면 함수에 대한 첫 번째 매개 변수의 값은이 컨트롤러와 연관된 범위 개체가되고 두 번째 매개 변수는 알림 서비스가됩니다.
새 컨트롤러, 서비스 등을 선언 할 때 배열 리터럴 구문을 사용할 수 있습니다. 여기에서 다음과 같이합니다.
angular.module('myModule').controller('MyController', ['$scope', 'notify', function ($scope, notify) { ... }]);
컨트롤러 함수에 대한 매개 변수로서의 배열은 DI 객체를 함수 매개 변수에 매핑합니다.
컨트롤러 등을 선언 할 때 옵션 # 2를 선호합니다. 모두 같은 위치에 있기 때문에 읽기 / 이해 / 교차 검사가 더 쉽기 때문입니다.
@ 마크 답변 을 보완하려면 $ inject 메서드를 다음 스타일로 사용하는 것이 중요합니다.
MyController.$inject = ['$scope', 'notify'];
'친숙한'주석 스타일을 허용 하지 않는 유일한 각도 레시피 인 공급자 를 빌드 할 때 주입 종속성을 추가 할 수 있습니다 .
.controller('MyController', ['$scope', 'notify',...
선언 할 종속성.
사용해야하는 방법 $inject
은 다음과 같습니다.
function ApplicationController($scope){
$scope.greet = "Foo is Not Great!5";
}
ApplicationController.$inject = ['$scope','$ionic'];
app.controller('ApplicationController', ApplicationController);
우리는 코드가 미화 되거나 최소화 되는 것을 방지하기 위해 이것이 필요합니다 .
function(firstName,lastName)
로 바뀔 수 있습니다 function(n,m)
.
따라서 AngularJS의 경우 $scope
's'로 대체 될 수 있으므로 코드가 손상됩니다 . 이것은 $
부호가 없으면 angularJS가 코드를 인식 할 수 없기 때문 입니다.
ng-strict-di
속성 이있을 때이 형식을 사용해야 합니다.
참고 URL : https://stackoverflow.com/questions/18698963/i-dont-understand-the-use-of-inject-in-controllers
'IT TIP' 카테고리의 다른 글
: before 및 : after로 인라인 스타일을 만드는 방법 (0) | 2020.11.23 |
---|---|
알 수없는 Tomcat 버전이 tomcat-7.0.42로 지정되었습니다. (0) | 2020.11.23 |
이름이 'default'인 구성을 찾을 수 없습니다. (0) | 2020.11.23 |
android.support.v7.widget.Toolbar 클래스를 확장하는 중에 오류가 발생 했습니까? (0) | 2020.11.23 |
컴파일러가 char에 대해 varargs char 오버로드보다 int 오버로드를 선호하는 이유는 무엇입니까? (0) | 2020.11.23 |