programing

컨트롤러에서 $inject를 사용할 수 없습니다.

subpage 2023. 3. 20. 23:13
반응형

컨트롤러에서 $inject를 사용할 수 없습니다.

Angular에 주입하는 것에 대해 완전히 혼란스럽다.어디에 왜 써야 할지 모르겠어요.여기 기술된 대로 공장에서만 사용하나요?

myController.$inject = ['$scope','notify'];

여기서notify공장 이름입니다.

이는 코드가 최소화된 후(최소화를 선택한 경우) 의존성 주입을 지원하기 위한 한 가지 방법입니다.

컨트롤러를 선언하면 함수는 다음 파라미터를 가져옵니다.

function ($scope, notify)

코드를 최소화하면 다음과 같은 기능이 나타납니다.

function (a, b)

각진 이후JS는 함수 매개 변수 이름을 사용하여 DI를 추론합니다. 각도로 인해 코드가 끊어집니다.JS가 모르는 것a또는b.

이 문제를 해결하기 위해 컨트롤러(또는 기타 서비스/팩토리 등)를 선언하는 추가 방법을 제공했습니다.

  1. 컨트롤러의 경우$injectmethod - 컨트롤러 함수의 파라미터에 매핑되는 리터럴 배열을 전달합니다.그래서, 만약 당신이

    ['$scope', 'notify']
    

    첫 번째 파라미터 값은 이 컨트롤러와 관련된 스코프 오브젝트가 되고 두 번째 파라미터는 알림 서비스가 됩니다.

  2. 새 컨트롤러, 서비스 등을 선언할 때 어레이 리터럴 구문을 사용할 수 있습니다.여기, 다음과 같은 작업을 수행합니다.

    angular.module('myModule').controller('MyController', ['$scope', 'notify', function ($scope, notify) {
        ...
    }]);
    

    컨트롤러 함수의 파라미터로서의 배열은 DI 객체를 함수 파라미터에 매핑합니다.

컨트롤러 등을 선언할 때는 모두 같은 장소에 있기 때문에 읽기/이해/크로스 체크가 용이하기 때문에 옵션 #2를 선호합니다.

@mark 답변을 보완하기 위해서는 $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).

그래서 Angular의 경우JS가 코드를 해독하는 이유는$scope's'로 대체할 수 있습니다.이것은, 이 기능이 없으면,$각도에 서명하다JS는 코드를 인식할 수 없습니다.

속성이 있는 경우 이 형식을 사용해야 합니다.

언급URL : https://stackoverflow.com/questions/18698963/i-dont-understand-the-use-of-inject-in-controllers

반응형