Ошибка Urularjs Uncaught: [$ injector: modulerr] при переходе на V1.3
Я изучаю Angular.js, и я не могу понять, что не так с этим простым кодом. Кажется, это выглядит хорошо, но дает мне следующую ошибку.
**Error**: Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.14/$injector/modulerr?p0=app&p1=Error%3A%20…gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.14%2Fangular.min.js%3A17%3A381)
И перед добавлением ng-app="app"
(я просто держал его как ng-app
), он приводил мне следующие ошибки. Почему это?
Error: [ng:areq] http://errors.angularjs.org/1.3.14/ng/areq?p0=Ctrl&p1=not%20a%20function%2C%20got%20undefined
at Error (native)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:6:417
at Sb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:19:510)
at tb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:20:78)
at $get (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:75:331)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:57:65
at s (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:7:408)
at A (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:56:443)
at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:299)
at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:316)
<!doctype html>
<html ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
</head>
<body>
<div ng-controller="Ctrl">
<input ng-model="name">
<h1>{{name}}</h1>
<h2>{{age}}</h2>
</div>
<script>
var Ctrl = function($scope)
{
$scope.age = 24;
};
</script>
</body>
</html>
Ответы
Ответ 1
После того, как объявлено назначение функции глобального контроллера AngularJS версии 1.3
Вам нужно сначала создать модуль AngularJS, а затем прикрепить все компоненты к этому конкретному модулю.
CODE
function Ctrl($scope) {
$scope.age = 24;
}
angular.module('app', [])
.controller('Ctrl', ['$scope', Ctrl]);
В частности, для вашего случая есть некоторая проблема с AngularJS 1.3.14
(понизить ее до 1.3.13
отлично работает). Хотя я бы предпочел, чтобы вы использовали angular 1.2.27 AngularJS 1.6.X, который является более стабильной версией и последней версией AngularJS.
Рабочий Plunkr
UPDATE:
Вы можете сделать свой текущий код в рабочем состоянии, разрешив объявление глобального контроллера внутри angular.config
. Но это не правильный способ запуска приложения angular.
function Ctrl($scope) {
$scope.age = 24;
}
angular.module('app', [])
.config(['$controllerProvider',
function ($controllerProvider) {
$controllerProvider.allowGlobals();
}
]);
Ответ 2
Вы должны определить свой контроллер
var app = angular.module('app', []);
app.controller('Ctrl', ['$scope',function($scope) {
$scope.age = 24;
}]);
Ответ 3
Я сам застрял в этом вопросе на некоторое время. Проверьте следующее: -
-
Путь к вам angular.js script правильный (вы вызываете его в своем html из локального источника или в качестве внешнего ресурса).
-
Далее, как только ваш angular.js правильно проверит, было ли ваше приложение инициализировано или нет.
var app=angular.module('app',[])
//в файле app.js
<body ng-app="app">
//в вашем html
-
Затем зарегистрируйте свой контроллер с приложением и передайте все необходимые инъекции
app.controller('myCtrl',function(){});
-
Вызовите свой файл javascript в html файле
< script src="app.js"
> < /script>