2014-12-24 5 views
0

Моего кода, как этоОшибки при регистрации контроллера AngularJS

App.js 
angular.module('mailerApp', [ 
    'mailerApp.services', 
    'mailerApp.controllers', 
    'ui.bootstrap', 
    'angular-loading-bar', 
    'textAngular', 
    'angularFileUpload' 
]); 

Cotrollers.js 
angular.module('mailerApp.controllers').controller('MailerCntrl', ['$scope', 'FileUploader', function ($scope, FileUploader) { 

}]); 

Services.JS 
angular.module('mailerApp.services', []).factory('rateRequestService', ['$http', rateRequestService]); 
function rateRequestService($http) { 
    var service = { getData: getData }; 
    return service; 
    function getData() { 
     return $http({ 
      method: 'Get', 
      url: '../services/RateRequestWS.asmx/GetReadOnlyData?' 
     }); 
    } 
} 

HTML 
body ng-app="mailerApp" ng-controller="MailerCntrl"> 
</body> 

Все выглядит хорошо для меня, но это бросает ошибку

Uncaught Error: [$injector:nomod] Module 'mailerApp.controllers' 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. 

Может ли какой-то момент, что я делаю неправильно здесь ?

+1

Если вы создаете модуль, вам нужно добавить пустой массив в качестве второго аргумента: 'angular.module ('mailerApp.controllers', [])' (Точно так же, как у вас есть с mailarApp. services') – tasseKATT

ответ

4

Вместо

angular.module('mailerApp.controllers').controller... 

Вам нужно сделать

angular.module('mailerApp').controller... // to add the controller to the mailerApp module 
angular.module('mailerApp.controllers', []).controller... // to add the controller to a new mailerApp.controllers module 

И то же самое с;

angular.module('mailerApp.services').factory... 

Вместо этого вам нужно

angular.module('mailerApp').factory... // add the factory to the mailerApp module 
angular.module('mailerApp.services', []).factory... // add the factory to a new mailerApp.services module 

Когда вы создать и угловой модуль, вы даете ему имя и список зависимостей в массиве;

var module = angular.module('<module_name>', [<dependencies>]) 

Но тогда, когда вы добавляете контроллер/завод в модуль, вам необходимо либо использовать module объект, который вы создали.

+1

Это неверно, так как он хочет, чтобы 'mailerApp.controllers' и' mailerApp.services' были отдельными модулями (так как он добавил их в качестве зависимых модулей к своему основному модулю). – tasseKATT

+0

@tasseKATT Я добавил, что в редактировании ответа. – Ashesh

+1

Пожалуйста, также обновите свой ответ, чтобы удалить первую часть (что не так) – thomaux

3
  1. когда вы пишете angular.module('mailerApp.controllers', [ ]), вы создаете новый модуль, как 'mailerApp.controllers' и во втором параметре вы передаете зависимости.

  2. и когда вы пишете angular.module('mailerApp.controllers'), он ссылается на ранее созданный модуль.

Но в вашем случае ваш модуль прямого ссылки без его создания, поэтому он дает вам ошибку. То же самое касается и других случаев.

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