注册控制器AngularJS时出错

时间:2014-12-24 12:00:11

标签: 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.

任何人都可以指出我在这里做错了吗?

2 个答案:

答案 0 :(得分: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

当你创建和angular模块时,你给它一个名字和数组中的依赖项列表;

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

但是当你向模块添加一个控制器/工厂时,你需要使用你创建的module对象。

答案 1 :(得分:3)

  1. 当您编写angular.module('mailerApp.controllers', [ ])时,您将新模块创建为'mailerApp.controllers',并在第二个参数中传递依赖项。

  2. 当您编写angular.module('mailerApp.controllers')时,它会引用先前创建的模块。

  3. 但是在您的情况下直接引用模块而不创建它,因此它会为您提供错误。其他情况也是如此