>웹 프론트엔드 >JS 튜토리얼 >내 AngularJS 컨트롤러가 함수가 아닌 이유는 무엇이며 어떻게 해결할 수 있나요?

내 AngularJS 컨트롤러가 함수가 아닌 이유는 무엇이며 어떻게 해결할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-02 17:55:11953검색

Why is my AngularJS Controller Not a Function, and How Can I Fix It?

AngularJS의 컨트롤러 기능 오류: 문제 해결을 위한 종합 가이드

AngularJS로 작업할 때 다음과 같은 오류가 발생할 수 있습니다. 컨트롤러는 함수가 아닙니다. 이 오류는 일반적으로 컨트롤러를 전역적으로 정의하려고 할 때 발생하며 이는 AngularJS 1.3에서는 더 이상 허용되지 않습니다. 이 문제를 해결하려면 module.controller 구문을 사용하여 컨트롤러를 명시적으로 등록해야 합니다.

해결책 1: module.controller 구문을 사용하여 컨트롤러 등록

컨트롤러를 정의하려면 module.controller 구문을 사용하여 다음 단계를 따르세요.

angular.module('app', [])
    .controller('ContactController', ['$scope', function ContactController($scope) {
        // Controller logic here
    }]);

해결책 2: $inject 주석 및 AngularJS 1.3.5 사용

AngularJS 버전 1.3.5 이상의 경우 $inject 주석을 사용하여 컨트롤러에 대한 종속성을 정의할 수 있습니다. 이 주석은 컨트롤러 기능의 상단에 배치되어야 합니다.

function ContactController($scope) {
    $scope.contacts = ["[email protected]", "[email protected]"];

    $scope.add = function() {
        $scope.contacts.push($scope.newcontact);
        $scope.newcontact = "";
    };
}
ContactController.$inject = ['$scope'];
angular.module('app', []).controller('ContactController', ContactController);

전역 컨트롤러 다시 활성화(선택 사항)

AngularJS 1.3은 엄격한 범위 지정을 시행합니다. 전역 컨트롤러 선언. 그러나 모듈 구성에서 AllowGlobals 옵션을 사용하여 전역 컨트롤러를 다시 활성화할 수 있습니다.

angular.module('app')
    .config(['$controllerProvider', function($controllerProvider) {
        $controllerProvider.allowGlobals();
    }]);

추가 고려 사항:

  • ng- 앱이 HTML 파일의 루트 요소에 설정되어 있습니다.
  • 스크립트가 올바른지 확인하세요. HTML에 포함됩니다.
  • 동일한 모듈을 여러 번 정의하지 마십시오. 이렇게 하면 이전에 등록된 엔터티가 지워질 수 있습니다.

이러한 해결 방법을 따르면 "컨트롤러가 아닌 컨트롤러" 문제를 성공적으로 해결할 수 있습니다. AngularJS에서 function' 오류를 수정하고 컨트롤러를 효과적으로 정의하세요.

위 내용은 내 AngularJS 컨트롤러가 함수가 아닌 이유는 무엇이며 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.