먼저 약간 설명 : 당신은 전역 함수 또는 module.controller(...)
있어서의 인자로를 사용하여 제어기를 선언 여부
의존성 주입의 경우, 문제가되지 않는다. 의존성 인젝터는 기능 자체에만 관심이 있습니다. 그래서 당신이 실제로에 대해 요구하고하는 것은 두의 동등성은 다음과 같습니다
// First
function MyController($scope) {}
MyController.$inject = [ '$scope '];
// Second
function($scope) {}
그리고 컨트롤러 기능은 인젝터 문제가되지 않는 익명인지 여부, 위의 두 단지뿐만 아니라 수 있기 때문에 :
// First
function MyController($scope) {}
MyController.$inject = [ '$scope '];
// Second
function MyController($scope) {}
지금 당신의 두 컨트롤러 사이의 유일한 차이는 그들 중 하나에서 $inject
속성의 존재임을 분명하다.
그리고 여기에 귀하의 질문에 대한 실제 대답 :
이 두 컨트롤러는 거의 동일합니다. 둘 다 인수로 $scope
을 수신하며 동일한 기능을합니다. 그러나 나중에 코드를 축소하기로 결정한 경우 $inject
배열이 설정된 버전 만 제대로 작동합니다. $inject
배열을 지정하지 않거나 인라인 주석 접근법 (http://docs.angularjs.org/guide/di#inlineannotation)을 사용하지 않으면 인젝터가 관심있는 종속성을 확인하는 유일한 방법은 함수 인수의 이름을 확인하는 것입니다. 서비스 ID). 그러나 minification은 이러한 주장을 무작위로 명명하여 이런 식으로 의존성을 인식 할 수있는 기회를 제거합니다.
코드를 축소 할 경우 $inject
배열 또는 인라인 주석을 사용하여 명시 적으로 종속성을 지정해야합니다. 그렇지 않으면 모든 버전이 정상적으로 작동합니다. 당신이 module.controller
방법을 사용하려고하는 경우
감사합니다.하지만'$ http'와는 작동하지 않습니다 ... 여기에 대한 질문 : http://stackoverflow.com/q/16664325 – user2283066