2013-05-23 2 views
1

저는 AngularJS를 배우는 중이고 똑같은 일을하는 여러 가지 방법을 찾고 있는데 어떤 것이 더 좋고 다른 옵션보다 하나의 옵션을 선택해야하는지 궁금합니다.Angularjs에 서비스를 삽입하는 올바른 방법은 무엇입니까?

내가 컨트롤러는 두 가지 방법으로 만들어 본 적이 :

app.controller('CustomersController', function ($scope, customersService) {}); 

app.controller('CustomersController', ['$scope', 'customersService', function ($scope, customersService) {}]); 

분명히 두 번째 방법이 더 입력이지만, 처음 이상 그 방법을 사용하는 이점이 있습니까?

답변

4

둘 다 일반적으로 작동하지만 코드가 축소되면 두 번째 구문 만 작동합니다. 대부분의 자바 스크립트 사용해 minifier 그래서 코드는 다음과 같이 보일 수 있습니다, 인수 식별자의 이름을 변경합니다 :

a.controller('CustomersController',function(b,c){}); 

을 즉, 각도가 더 이상 서비스를 주입 할 필요가 결정할 수 발생합니다. 당신이 배열 구문을 사용하는 경우에는이 같은 모습 축소 된 코드를 얻을 것이다 :이 경우

a.controller('CustomersController',['$scope','customersService',function(b,c){}]); 

를 배열의 마지막 요소는 컨트롤러 함수로 사용되며, 이전의 모든 요소를 ​​나타내는 문자열 서비스의 이름. 이 목록은 컨트롤러 기능에 효과적으로 적용되며, 각 서비스는 minifier에 의해 선택된 임의의 식별자로 식별됩니다.

+0

두 번째 옵션과 마찬가지로 컨트롤러를 작성한 후에 코드 'CustomersController. $ inject = ['$ scope ']'를 쓰거나 첫 번째 옵션에만 필요합니까? – callmekatootie

0

두 번째 방법을 사용하면 코드로 변수를 축소 할 수 있습니다. 이 작업을 수행하지 않으려는 경우 :

['$scope', 'customersService', function ($scope, customersService) {}] 

그러면 변수가 축소되어 응용 프로그램을 손상시킬 수 있습니다. 때문에 어떻게 의존성 주입 작업 작동하지 않습니다

app.controller('CustomersController', function (a, b) {}); 

: 당신이 뭔가에 축소 된이 될 것이다 처음으로 코드를 축소하는 계획이라면

1

어느 하나가, 두 번째는 좋은 제안한다 두 번째 것은 다음과 같이됩니다 :

app.controller('CustomersController', ['$scope', 'customersService', function (a, b) {}]); 

어떤 각도는 내부적으로는 $ 스코프를 넣을 것을 알고 b는 고객 서비스를 입력합니다.

관련 문제