programing

'MainController' 인수가 함수가 아니며 AngularJS에서 정의되지 않았습니다.

telecom 2023. 9. 27. 16:55
반응형

'MainController' 인수가 함수가 아니며 AngularJS에서 정의되지 않았습니다.

여기 나의 HTML과 JS파일이 있습니다.

HTML 파일

<!DOCTYPE html>
<html ng-app="">

<head>
  <!--Works with latest Stable Build-->
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>

  <!--Does not work with Latest Beta-->
  <!--UNCOMMENT ME! <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular.min.js"></script>-->


  <script src="script.js"></script>
</head>

<body ng-controller="MainController">
  <h1>Angular Playground</h1>
  {{message}}
  <br />Total Length: {{message.length}}
</body>

</html>

자바스크립트 파일

var MainController = function($scope) {
    $scope.message = "Hello, Michael";
};

최신 스테이블 빌드를 사용하면 다음과 같은 결과를 얻을 수 있습니다(분명히 정확합니다).

각운동장

안녕하세요 마이클 총길이: 14

하지만 베타 18을 사용하면 다음과 같은 오류가 발생합니다.

오류: [ng:areq] 'MainController' 인수가 함수가 아닙니다. 정의되지 않았습니다.

페이지는 다음을 반환합니다.

각운동장 #2

{{message}} 총길이: {message.length}

무슨 생각 있어요? 뭐가 원인일까요?

Angular(>1.3.0)의 최신 버전에서는 글로벌 컨스트럭터 함수를 선언할 수 없고 ng-controller와 함께 사용할 수 없습니다.

빠른 수정 방법은 각도 모듈을 만들고 메인 컨트롤러를 컨트롤러로 추가하는 것입니다.

기능이 전역으로 추가되는 것을 방지하기 위해 메인 컨트롤러를 IIFE에 래핑했습니다.

(function() {

    angular
        .module("appName", [])
        .controller("MainController", MainController);

    MainController.$inject = ["$scope"];

    function MainController($scope) {
        $scope.message = "Hello, Michael";
    };

})();

HTML에서 ng-app 지시문에 각도 모듈의 이름을 추가해야 합니다.

<!DOCTYPE html>
<html ng-app="appName">

<head>
  <!--Works with latest Stable Build-->
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>

  <!--Does not work with Latest Beta-->
  <!--UNCOMMENT ME! <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular.min.js"></script>-->


  <script src="script.js"></script>
</head>

<body ng-controller="MainController">
  <h1>Angular Playground</h1>
  {{message}}
  <br />Total Length: {{message.length}}
</body>

</html>

언급URL : https://stackoverflow.com/questions/25392876/argument-maincontroller-is-not-a-function-got-undefined-in-angularjs

반응형