Nano Hash - криптовалюты, майнинг, программирование

Неперехваченная ошибка: модуль «myApp» недоступен! (УгловойJS)

Я работаю над угловым учебником, и у меня возникла проблема в начале. Загрузка модуля myApp выдает ошибку. Как объясняется в руководстве, это должен быть один из трех способов создания контроллера.

Вот экран печати из руководства, над которым я работаю: Создание контроллеров в учебниках

Когда я обновляю веб-страницу, я получаю эту ошибку в консоли Chrome:

Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to:
Error: [$injector:nomod] Module 'myApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

Это мой HTML-файл

  <html ng-app="myApp">
        <head>
        </head>
        <body>
            <h1>Hello world!</h1>   

            <div ng-controller="MainController">
                {{ 2+2 }}
                <br>
                {{ val }}
            </div>
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
            <script src="app.js">
        </body>
    </html>

Это мой файл app.js

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

var MainController = function($scope){
    $scope.val = "Main controller variable value"
}

Так в чем моя проблема? Я не могу понять это.

заранее спасибо


Ответы:


1

Модуль 'myApp' недоступен! Вы либо неправильно написали имя модуля, либо забыли его загрузить. При регистрации модуля убедитесь, что вы указали зависимости в качестве второго аргумента.

Ваша первоначальная проблема связана с недопустимым тегом скрипта. По сути, ваш тег script не закрыт, его необходимо закрыть, чтобы браузер мог загрузить файл app.js. Теги сценария не являются самозакрывающимися, поэтому им нужен закрывающий тег.

<script src="app.js">

должно быть

<script src="app.js"></script>

Теперь, как только вы это исправите, вы получите другую ошибку.

[ng:areq] Аргумент «MainController» не является функцией, стал неопределенным

Поскольку вы используете последнюю версию angular, то есть что-либо >= 1.3.x, необходимо, чтобы контроллер был зарегистрирован вручную с использованием конструкции .controller. Подробнее см. здесь.

Примечание. Это немного сбивает с толку, поскольку на снимке экрана показано, что вы используете версию 1.2.0 (которая не обязательно требует явной регистрации контроллера), а фрагмент в вопросе показывает версию 1.4.x.

26.10.2015
  • Еще один вопрос: следует ли мне продолжить этот урок, или между версиями 1.2 и 1.4 Angular слишком много различий? 27.10.2015
  • @DavorBramorPečnik Это сложный вопрос, :) потому что в идеале нет смысла что-либо делать с 1.2.x на данный момент, но если вы хотите начать с angular, этот учебник должен быть хорошим, но вы всегда можете использовать 1.4 и узнать соответствующие различия и включить их. Но я не уверен, что вы найдете слишком много руководств по 1.4.x. В официальной документации Angular есть селектор версий, который тоже должен быть полезен. 27.10.2015
  • Супер. Тогда я продолжу этот урок. Еще раз спасибо за все ваши ответы. 28.10.2015

  • 2

    Вы должны зарегистрировать controller в угловом модуле myApp.

    App.js

    var myApp = angular.module('myApp', []);
    myApp.controller('MainController', MainController );
    var MainController = function($scope){
        $scope.val = "Main controller variable value"
    }
    

    В основном то, что вы делали, правильно, но за этим кодом последовала более старая версия AngularJS. То, как вы объявили свой контроллер, не что иное, как функция контроллера, для которой необходимо включить allowGlobals() метод $controllerProvider. Поскольку метод Angular 1.3 + allowGlobals() отключен путем добавления кода ниже, вы можете включить его, чтобы ваш код работал, но это не рекомендуется делать.

    Конфигурация

    myApp.config(['$controllerProvider',
      function($controllerProvider) {
        $controllerProvider.allowGlobals();
      }
    ]);
    

    См. тот же SO Answer здесь

    26.10.2015

    3

    Попробуй это:

    myApp.controller ("MainController",[$scope, function ($scope){
          $scope.val = "Main controller variable value"
    }]);
    

    Директива ng-controller ищет MainController в вашем модуле MyApp.

    26.10.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..