오류 : 각도 입력의 [ng : areq]
긴 샷이지만 이전 에이 오류를 본 사람이 있습니까? express, angular 및 mongoDB를 사용하여 'Transporters'를 추가합니다. 전송기 컨트롤러가 관리하는 페이지에 액세스 할 때 마다이 오류가 발생합니다.
Error: [ng:areq] http://errors.angularjs.org/1.2.12/ng/areq?p0=TransportersController&p1=not%20aNaNunction%2C%20got%20undefined
at Error (native)
at http://localhost:3000/lib/angular/angular.min.js:6:450
at tb (http://localhost:3000/lib/angular/angular.min.js:18:360)
at Pa (http://localhost:3000/lib/angular/angular.min.js:18:447)
at http://localhost:3000/lib/angular/angular.min.js:62:17
at http://localhost:3000/lib/angular/angular.min.js:49:43
at q (http://localhost:3000/lib/angular/angular.min.js:7:386)
at H (http://localhost:3000/lib/angular/angular.min.js:48:406)
at f (http://localhost:3000/lib/angular/angular.min.js:42:399)
at http://localhost:3000/lib/angular/angular.min.js:42:67
트랜스 포터 컨트롤러는 다음과 가변합니다.
'use strict';
angular.module('mean.transporters').controller('TransportersController', ['$scope', '$routeParams', '$location', 'Global', 'Transporters', function ($scope, $routeParams, $location, Global, Transporters) {
$scope.global = Global;
$scope.create = function() {
var transporter = new Transporters({
name: this.name,
natl_id: this.natl_id,
phone: this.phone
});
transporter.$save(function(response) {
$location.path('transporters/' + response._id);
});
this.title = '';
this.content = '';
};
$scope.remove = function(transporter) {
if (transporter) {
transporter.$remove();
for (var i in $scope.transporters) {
if ($scope.transporters[i] === transporter) {
$scope.transporters.splice(i, 1);
}
}
}
else {
$scope.transporter.$remove();
$location.path('transporters');
}
};
$scope.update = function() {
var transporter = $scope.transporter;
if (!transporter.updated) {
transporter.updated = [];
}
transporter.updated.push(new Date().getTime());
transporter.$update(function() {
$location.path('transporters/' + transporter._id);
});
};
$scope.find = function() {
Transporters.query(function(transporters) {
$scope.transporters = transporters;
});
};
$scope.findOne = function() {
Transporters.get({
transporterId: $routeParams.transporterId
}, function(transporter) {
$scope.transporter = transporter;
});
};
}]);
내 견해에서 나는 목록을 호출하고 메소드를 만듭니다. 위의 오류가 발생합니다.
나는 ng : areq에 대한 각도 문서에서 얻었 지만 여전히 무슨 일이 일어나고 있는지 알 수 없습니다.
AngularJS는 종종 도우미 함수를 사용하여 특정 값이 존재하고 진실을 주장합니다. 어설 션이 실패하면 오류가 발생합니다. 이 문제를 해결하려는 어설 션이 예상되는 값이 정의되고 진실해야합니다.
컨트롤러를 호출하는 뷰는 다음과 달라집니다 public/views/transporters/list.html
.
<section data-ng-controller="TransportersController" data-ng-init="find()">
<ul class="transporters unstyled">
<li data-ng-repeat="transporter in transporters">
<span>{{transporter.created | date:'medium'}}</span> /
<h2><a data-ng-href="#!/transporters/{{transporter._id}}">{{transporter.name}}</a></h2>
<div>{{transporter.natl_id}}</div>
<div>{{transporter.phone}}</div>
</li>
</ul>
<h1 data-ng-hide="!transporters || transporters.length">No transporters yet. <br> Why don't you <a href="/#!/transporters/create">Create One</a>?</h1>
</section>
운송 업체 서비스 코드 :
angular.module('transporterService', [])
.factory('Transporter', ['$http', function($http){
// all return promise objects
return {
get: function(){
return $http.get('/api/transporters');
},
create: function(transporterData){
return $http.post('/api/transporters', transporterData);
},
delete: function(id){
return $http.delete('/api/transporters/'+id);
}
};
}]);
이 오류가 한 번 발생했습니다. 문제는 다른 인수로 두 곳에서 angular.module ()을 정의했다는 것입니다.
예 :
var MyApp = angular.module('MyApp', []);
다른 곳에서는
var MyApp2 = angular.module('MyApp', ['ngAnimate']);
나는 그 오류를 두 번 예배합니다.
1) 내가 썼을 때 :
var app = module('flapperNews', []);
대신에 :
var app = angular.module('flapperNews', []);
2) 일부 html을 복사하여 내게 넣었을 때 html의 컨트롤러 이름이 내 app.js 파일의 컨트롤러 이름과 정확히 일치하지. 예를 들면 다음과 같습니다.
index.html :
<script src="app.js"></script>
...
...
<body ng-app="flapperNews" ng-controller="MainCtrl">
app.js :
var app = angular.module('flapperNews', []);
app.controller('MyCtrl', ....
html에서 컨트롤러 이름은 "MainCtrl"이고 js에서는 "MyCtrl"이라는 이름을 사용했습니다.
실제로 오류 URL에 포함 된 오류 메시지가 있습니다.
오류 : [ng : areq] http://errors.angularjs.org/1.3.2/ng/areq?p0= MainCtrl & p1 = not % 20 a % 20 function % 2C % 20 got % 20 undefined
여기에는 상형 문자가 없습니다.
MainCtrl 함수가 정의되지 않습니다.
즉, "MainCtrl이라는 기능이 없습니다. 맞춤법을 확인하십시오."
Angular 컨트롤러에서 모듈을 정의했지만 HTML 파일에서 앱 이름을 설정하지 않았던 사건을 때이 문제가 발생했습니다. 예를 들면 :
<html ng-app>
올바른 대신 :
<html ng-app="myApp">
내가 다음과 같이 정의했을 때 :
angular.module('myApp', []).controller(...
내 HTML 파일에서 참조했습니다.
index.html에 컨트롤러를 포함하는 것을 잊었습니다. 컨트롤러가 없습니다.
<script src="js/controllers/Controller.js"></script>
나는 같은 오류가 있지만 문제는 메인 애플리케이션에 새 모듈을 삽입하지 않습니다.
var app = angular.module("geo", []);
...
angular
.module('myApp', [
'ui.router',
'ngResource',
'photos',
'geo' //was missing
])
각도 모듈의 이름을 확인하십시오. app.js에서 모듈의 이름은 무엇입니까?
TransportersController는 다음이 있습니다.
angular.module('mean.transporters')
귀하의 TransportersService에는 다음이 있습니다.
angular.module('transporterService', [])
각각에서 동일한 모듈을 참조하고 싶을 것입니다.
angular.module('myApp')
나도이 오류가 다음과 같이 코드를 변경했습니다.
HTML
<html ng-app="app">
<div ng-controller="firstCtrl">
...
</div>
</html>
app.js
(function(){
var app = angular.module('app',[]);
app.controller('firstCtrl',function($scope){
...
})
})();
모듈의 이름이 ng-app과 동일한 지 확인해야합니다.
그러면 div는 firstCtrl의 범위에 있습니다.
나에게도 같은 문제가 발생했지만 내 문제는 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>
:)
컨트롤러 이름이 같지 않을 때 발생했습니다 (대소 문자 구분!).
.controller('mainCOntroller', ... // notice CO
그리고 관점에서
<div class="container" ng-controller="mainController"> <!-- notice Co -->
나는 이것이 어리석은 것처럼 들리지만 아직 여기에서 보지 보지 :). 이 오류는 내 컨트롤러 끝에 var에 익명으로 할당 되었기 때문에 함수의 닫는 대괄호와 관련 세미콜론을 버리기 때문에 발생했습니다.
컨트롤러의 많은 문제 (주입 오류, 구문 등으로 인해 발생했는지 여부)로 인해이 오류가 발표되었습니다.
다음과 같이 경로에 전체 파일 이름을 포함 할 때 이와 동일한 오류가 발생합니다.
app.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'home.html',
controller: 'mainController.js'
})
.when('/portfolio', {
templateUrl: 'portfolio.html',
controller: 'mainController.js'
})
});
그럴 때
app.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'home.html',
controller: 'mainController'
})
.when('/portfolio', {
templateUrl: 'portfolio.html',
controller: 'mainController'
})
});
Angular는 앱 및 컨트롤러와 같이 이름을 특정 항목을 지시문과 앱 전반에 설명합니다. 모든 이름을 일관성있게 지정하고 수행 할 때이를 확인합니다.
같은 페이지에 여러 각도 모듈이있을 때 이런 일이 발생했습니다.
부분보기를 사용할 때 오류가 발생했습니다.
하나의 부분보기가
<script src="~/Scripts/Items.js"></script>
<div ng-app="SearchModule">
<div ng-controller="SearchSomething" class="col-md-1">
<input class="searchClass" type="text" placeholder="Search" />
</div>
</div>
기타
<div ng-app="FeaturedItems" ng-controller="featured">
<ul>
<li ng-repeat="item in Items">{{item.Name}}</li>
</ul>
</div>
다른 컨트롤러로 동일한 모듈에 두개의 충전하기 시작했습니다.
보안 및 로그인 상태와 관련된 인증서 앱에서 동일한 오류가 발생했습니다. 다른 솔루션은 도움이되지 않는 새 익명 브라우저 창을 여는 것만으로 도 효과가 있습니다.
기본적으로 AngularJS를 절대 도달 할 수없는 상태로 만드는 이전 버전의 앱에서 남은 쿠키와 토큰이있었습니다. 따라서 areq
주장이 실패했습니다.
이것이 일어날 수있는 또 다른 방법이 있습니다.
내 앱에는 ui-router 상태 관리, 구성 및 이와 유사한 것들을 처리하는 기본 모듈이 있습니다. 실제 기능은 모두 다른 모듈에 정의되어 있습니다.
나는 모듈을 정의했다
angular.module('account', ['services']);
컨트롤러 'DashboardController'가 있었지만 DashboardController를 참조하는 상태가있는 주 모듈에 주입하는 것을 잊었습니다.
주입 누락으로 인해 DashboardController를 사용할 수 없었기 때문에이 오류가 발생했습니다.
내 경우 app.js
에는 컨트롤러 아래에 포함 하고 app.js
같은 컨트롤러 위에 포함해야합니다.
<script src="js/app.js"></script>
<script src="js/controllers/mainCtrl.js"></script>
$ stateProvider에서 컨트롤러를 설정하는 것 이외의 모든 작업을 올바르게 수행했습니다. 변수 이름 대신 파일 이름을 사용했습니다.
다음 코드는 잘못되었습니다.
formApp.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('management', {
url: '/management',
templateUrl: 'Views/management.html',
controller: 'Controllers/ManagementController.js'
});
그리고 이것은 올바른 접근 방식입니다.
formApp.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('management', {
url: '/management',
templateUrl: 'Views/management.html',
controller: 'ManagementController'
});
눈치 채 셨는지 확인하세요.
컨트롤러 : 'ManagementController'
그리고 내 컨트롤러 파일 ManagementController.js에 대해 궁금한 사람들에게는 다음과 같이 보입니다.
formApp.controller('ManagementController', ['$scope', '$http', '$filter', '$state',function(scope, http, filter, state) {
scope.testFunc = function() {
scope.managementMsg = "Controller Works Fine.";
};
}]);
위의 예에서 빠른 시작 각도 골격을 원하는 사람들은이 링크를 확인하십시오 https://github.com/zaferfatih/angular_skeleton
응용 프로그램에서 컨트롤러를 찾을 수없는 경우 오류가 표시됩니다. ng-app
및 ng-controller
지시문의 값을 사용하여 올바른지 확인해야합니다.
이것은 ng-include를 사용할 때 나에게 발생했으며 포함 된 페이지에는 컨트롤러가 정의되어 있습니다. 분명히 그것은 지원되지 않습니다.
ng-include에 의해로드 된 컨트롤러가 작동하지 않음
나는 어리석은 실수를하고 많은 시간을 낭비했기 때문에 여기 에이 답변을 추가하여 누군가를 돕습니다.
$ scope 변수 (dependency)를 잘못 추가했습니다 (작은 따옴표없이 추가했습니다).
예를 들어 내가했던 일은 다음과 같았습니다.
angular.module("myApp",[]).controller('akshay',[$scope,
원하는 구문은 다음과 같습니다.
angular.module("myApp",[]).controller('akshay',['$scope',
// 세 번째 유형의 경우 컨트롤러 종속성 포함
var app = angular.module('app', ['controller']);
// 컨트롤러를 선언하는 첫 번째 유형 // 잘 작동하지 않습니다.
var FirstController = function($scope) {
$scope.val = "First Value";
}
// 두 번째 유형의 선언
app.controller('FirstController', function($scope) {
$scope.val = "First Controller";
});
// 세 번째이자 최상의 유형
angular.module('controller',[]).controller('FirstController', function($scope) {
$scope.val = "Best Way of Controller";
});
참고 URL : https://stackoverflow.com/questions/21673404/error-ngareq-from-angular-controller
'ProgramingTip' 카테고리의 다른 글
`database.yml` 파일 내의 환경 변수에 액세스하지 못함 (0) | 2020.11.19 |
---|---|
Cloudfront custom-origin 배포가 502 "오류 요청을받을 수 없습니다."를 반환합니다. (0) | 2020.11.19 |
any () 함수의 반대 (0) | 2020.11.19 |
imdb.load_data () 함수에 대해 'allow_pickle = False'일 때 개체 배열을로드 할 수 없음을 수정하는 방법은 무엇입니까? (0) | 2020.11.19 |
한 개체의 속성 값을 동일한 유형의 다른 개체에 자동으로 적용 하시겠습니까? (0) | 2020.11.19 |