[angularjs] $ rootScope에 도달 할 수 없습니다

다음 파일 “작동”(오류가 발생하지 않는다는 의미) :

<!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', ...];

아시다시피 사용할 수 있습니다.


답변