2014-02-03 7 views
6

Я новичок. Просто учитесь/пытаемся интегрировать Angular с моим webapp (Java + jQuery + requireJS). Я не использую какой-либо маршрутизатор, а ниже - мой скрипт. Из другого stackoverflow я узнал, что эта ошибка связана с отсутствием включения модуля ngRoute. Начиная с версии 1.1.6, это отдельная часть. Но в моем нижнем коде я совсем не использую ngRouter. Когда я не ссылаюсь на это, почему я получаю эту ошибку?

Ошибка: [$ injector: modulerr] Не удалось создать экземпляр модуля из-за: [$ injector: nomod] Модуль «счетчик» недоступен! Вы либо ошибочно написали имя модуля, либо забыли загрузить его. Если регистрация модуля гарантирует, что вы укажете зависимости в качестве второго аргумента. http://errors.angularjs.org/1.2.11/ $ форсунка/nomod p0 = счетчик

Шаблон:

<ul ng-app="counter" ng-controller="counterController"> 
<li> 
    <span class="ui-button-text" ng-bind="critical"></span> 
</li> 
<li> 
    <span class="ui-button-text" ng-bind="error"></span> 
</li> 
<li> 
    <span class="ui-button-text" ng-bind="warn"></span> 
</li> 
<li> 
    <span class="ui-button-text" ng-bind="note"></span> 
</li> 
</ul> 

JS

requirejs.config({ 
    paths : { angular: "/js/lib/angular/angular.min" }, 
    shim : { "angular": { deps: [ "jquery"], exports: "angular" } } 
}); 

require(["angular", "jquery"],function() { 

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

module.controller('CounterController', function ($scope, $http, $timeout) { 
    $scope.critical = 0; 
    $scope.error = 0; 
    $scope.warn = 0; 
    $scope.note = 0; 

    function setData(d){ 
     $scope.critical = d.critical; 
     $scope.error = d.error; 
     $scope.warn = d.warn; 
     $scope.note = d.note; 
    } 

    var getCounters = function() { 
     var config = {headers: { 
       'X-MY-Request': (new Date()).getMilliseconds() 
      } 
     }; 

     $http.get('xxxxxxx', config) 
       .success(function(data, status, headers, config) { 
      setData(data); 
      $timeout(getCounters, 60000); 
     }).error(function(data, status, headers, config) { 
      // Handle the error 
     }); 

    } 


    $timeout(getCounters, 500); 
}); 

ответ

3

В шаблоне ваше имя контроллера имеет строчные буквы, начиная письмо counterController. У вашего js есть верхний регистр CounterController. Может ли это быть проблемой?

Любой внедренный модуль, который не найден, вызовет ошибку. Не только ngRoute.

Edit:

Я просто бросил быстрый plunker вместе и без «требуют» набивать весь ваш код является правильным. Так что вы ничего не пропустите в своем угловом коде. Все модули работают.

Таким образом, проблема должна быть связана с настройкой «требуется». Я буквально никогда не использовал его, поэтому не мог вам помочь. Посмотрите еще Angular + Requirejs - Loading in the wrong order.

На данный момент, если бы я был вами, я бы изучил одну технологию за раз. Просто загрузите свои угловые и jquery-ресурсы, а затем узнайте, как их использовать. Затем, когда вам становится немного удобнее, добавьте «require».

+0

Nope. counterController является правильным. Я сделал ошибку, копируя ее в этой теме. Кроме того, я только что обновил свой исходный поток с сообщением об ошибке, которое я получаю. – user2300875

+0

Должен ли я добавить app.js, router.js и т. Д.? Как я уже сказал, мой веб-проект работает с requireJS & jQuery.Поскольку это мой первый угловой модуль, я просто включил angular.js в мою/lib/угловую папку и создал файл js. Я что-то пропустил? – user2300875

+1

Matti, Вы имеете право на загрузку. Как я вижу несколько раз это работает. как упоминалось в потоке, для этого требуется «domReady» перед угловым захватом. Что касается технологии, как я уже сказал, мой webapp уже работает с jQuery & requirejs. Так угловато новичок для меня и это то, что я пытаюсь изучить. Благодарю. – user2300875

0

Если в вашем тестовом каркасе появляется $injector:modulerr, возможно, вам придется включить модуль в тестовую среду. Для меня это была карма и фантомы, нуждающиеся в включении в: test/karma.config.js

0

Я столкнулся с этой ошибкой с моим корневым модулем приложения, который не загружается.

В конце концов я переупорядочил свой список зависимостей и ошибку, когда вы отсутствовали.

Надеюсь, что это поможет кому-то. Потратьте меня на час!

1

была такая же проблема, чтобы получить больше информации об ошибке вызовите функцию начальной загрузки с {debugInfoEnabled: true} следующим образом:

angular.bootstrap(document.getElementById('app-root'), ['MyApp'], {debugInfoEnabled: true}); 

Это выведет на консоль то, что подчеркивание модуль, который не может создать экземпляр.

Смежные вопросы