[javascript] Angularjs : 오류 : [ng : areq] 인수 ‘HomeController’가 함수가 아니므로 정의되지 않았습니다.

이것은 angularjs를 사용하여 서비스 파일을 만들고 컨트롤러에 서비스를 추가하는 데모입니다.

내 데모에 두 가지 문제가 있습니다.

  • 하나는 이 오류가 발생 <script src="HomeController.js">하기 전에 넣을 때입니다 <script src="MyService.js">.

오류 : [ng : areq] 인수 ‘HomeController’는 함수가 아니므로 정의되지 않았습니다.

  • 다른 하나는 다음 오류가 발생 <script src="MyService.js">하기 전에 넣을 때입니다 <script src="HomeController.js">.

오류 : [$ injector : unpr] 알 수없는 공급자 : MyServiceProvider <-MyService

내 출처 :

파일 Index.html:

<!DOCTYPE html>
<html >
    <head lang="en">…</head>
    <body ng-app="myApp">
        
        <div ng-controller="HomeController">
            <div ng-repeat="item in hello">{{item.id + item.name}}</div>
        </div>

        <script src="Scripts/angular.js"></script>
        <script src="Scripts/angular-route.js"></script>

        <!-- App libs -->
        <script src="app/app.js"></script>
        <script src="app/services/MyService.js"></script>
        <script src="app/controllers/HomeController.js"></script>
    </body>
</html>

파일 HomeController.js:

(function(angular){
    'use strict';

    var myApp = angular.module('myApp',[]);

    myApp.controller('HomeController',function($scope,MyService){
        $scope.hello=[];
        $scope.hello = MyService.getHello();
    });
})(window.angular);

파일 MyService.js:

(function(angular){
    'use strict';

    var myApp = angular.module('myApp',[]);

    myApp.service('MyService', function () {
        var hello =[  {id:1,name:'cuong'},
            {id:2,name:'nguyen'}];
        this.getHello = function(){
            return hello;
        };
    });

})(window.angular);



답변

그러면 새 모듈 / 앱이 생성됩니다.

var myApp = angular.module('myApp',[]);

이미 생성 된 모듈에 액세스하는 동안 ( 두 번째 인수가 생략 된 것에주의하십시오 ) :

var myApp = angular.module('myApp');

두 스크립트 모두에서 첫 번째 접근 방식을 사용하므로 기본적으로 이전에 만든 모듈을 재정의합니다.

로드되는 두 번째 스크립트에서 var myApp = angular.module('myApp');.


답변

이 오류가 한 번 발생했습니다. 내 문제는 FILE_NAME_WHERE_IS_MY_FUNCTION.js를 추가하지 않았다는 것입니다.

그래서 내 file.html 은 내 기능이 어디에 있는지 찾지 못했습니다.

“file.js”를 추가하면 문제가 해결되었습니다.

<html ng-app='myApp'>
    <body ng-controller='TextController'>
    ....
    ....
    ....
    <script src="../file.js"></script>
    </body>
</html>


답변

또한 컨트롤러가 body의 닫는 태그 바로 앞의 index.html 하단에있는 스크립트 태그 내에 정의되어 있는지 확인하십시오.

 <!-- build:js({.tmp,app}) scripts/scripts.js -->
    <script src="scripts/app.js"></script>
    <script src="scripts/controllers/main.js"></script>
    <script src="scripts/controllers/Administration.js"></script>
    <script src="scripts/controllers/Leaderboard.js"></script>
    <script src="scripts/controllers/Login.js"></script>
    <script src="scripts/controllers/registration.js"></script>

specific.html, specific.js 및 app.js 페이지에서 모든 철자가 “올바르게”(동일하게) 표기되어 있으면 문제가 해결됩니다.


답변

주사 목록과 기능 사이에 “,”를 놓칠 때마다 몇 번이나 발생했습니다.

app.controller('commonCtrl', ['$scope', '$filter',function($scope,$filter) {

}]);


답변

이 오류도 발생했지만 제 경우에는 컨트롤러 명명 규칙 때문이었습니다. 나는 선언 controller: "QuestionController".state있지만 컨트롤러 정의에 나는 그것을 좋아 선언

yiiExamApp.controller('questionController' ...

그러나 그것은

yiiExamApp.controller('QuestionController' ...

이 어리석은 실수로 인해이 오류에 직면 한 사람들에게 도움이되기를 바랍니다. 나는 그것을 식별하는 데 4 시간을 낭비했습니다.


답변

같은 오류가 발생했습니다. 나는 이와 같은 자바 스크립트를 정의했다.

<script src="controllers/home.js" />

그런 다음 이것으로 변경

<script src="controllers/home.js"></script>

이 후 내 문제가 해결되었습니다.


답변

나는 또한이 동일한 오류가 발생했으며 나를위한 수정 사항은 기본 모듈 배열에 자식 모듈을 포함시키는 것이 었습니다.

var myApp = angular.module('myApp', ['ngRoute', 'childModuleName']);