다음 파일 “작동”(오류가 발생하지 않는다는 의미) :
<!doctype html>
<html ng-app="modx">
<script src="http://code.angularjs.org/angular-1.0.0rc7.js"></script>
<script>
angular.module("modx", [], function($routeProvider) {
});
</script>
</html>
하지만 이것은
<!doctype html>
<html ng-app="modx">
<script src="http://code.angularjs.org/angular-1.0.0rc7.js"></script>
<script>
angular.module("modx", [], function($routeProvider, $rootScope) {
});
</script>
</html>
오류가 발생합니다.
오류 : 알 수없는 공급자 : modx에서 $ rootScope
소스 파일 : http://code.angularjs.org/angular-1.0.0rc7.js
줄 : 2491
WTF?
답변
구성 단계에서는 예를 들어 요청할 수 없습니다. 제공자 만 요청할 수 있습니다.
var app = angular.module('modx', []);
// configure stuff
app.config(function($routeProvider, $locationProvider) {
// you can inject any provider here
});
// run blocks
app.run(function($rootScope) {
// you can inject any instance here
});
자세한 내용은 http://docs.angularjs.org/guide/module 을 참조 하십시오 .
답변
다음 “패턴”이 매우 유용하다는 것을 알았습니다.
MainCtrl.$inject = ['$scope', '$rootScope', '$location', 'socket', ...];
function MainCtrl (scope, rootscope, location, thesocket, ...) {
여기서 MainCtrl은 컨트롤러입니다. 이름을 변경하고 문제를 일으킬지도 모른다는 두려움에 대해 인스턴스의 일대일 모방을 수행하는 Controller 함수의 매개 변수 이름에 의존하는 것이 불편합니다. 이 목적으로 $ inject를 명시 적으로 사용하는 것이 좋습니다.
답변
나는 당신이했던 것처럼 구문을 사용 하지 않는 것이 좋습니다 . AngularJS와 당신이 원하는대로 다양한 기능을 가지고 있습니다 ( run
, config
, service
, factory
, 등),있는 더 professional.In이 기능 당신도 주입하지 않아도 스스로 같은
MainCtrl.$inject = ['$scope', '$rootScope', '$location', 'socket', ...];
아시다시피 사용할 수 있습니다.