Подтвердить что ты не робот

Ошибка 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>
4b9b3361

Ответ 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>