[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']);