itsource

$rootScope에 액세스할 수 없습니다.

mycopycode 2023. 2. 26. 09:45
반응형

$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은 컨트롤러입니다.이름을 바꾸고 일을 망칠까 봐 컨트롤러 함수의 파라미터 이름에 의존하는 것이 불편합니다.이 목적으로 $inject를 명시적으로 사용하는 것이 좋습니다.

저는 당신이 했던 것처럼 구문을 사용하는 것을 추천하지 않습니다.AngularJs를 사용하면 원하는 대로 다양한 기능을 사용할 수 있습니다(run,config,service,factory, 등)이 더 프로페셔널합니다.이 기능에서는 직접 주사할 필요도 없습니다.

MainCtrl.$inject = ['$scope', '$rootScope', '$location', 'socket', ...];

너도 알다시피 쓸 수 있어.

언급URL : https://stackoverflow.com/questions/10486769/cannot-get-to-rootscope

반응형