错误或缺少模块?

时间:2015-12-06 18:09:09

标签: javascript angularjs asp.net-mvc-5 factory angular-module

我有一个ASP.NET MVC5应用程序,我在其中使用AngularJS。在这里,我有一个名为atTheMS的模块,其中包含一个名为albumService的服务工厂和3个控制器:ListControllerEditControllerDetailsController。服务和控制器都依赖于atTheMS模块,但我仅从albumService

获得此错误
Uncaught Error: [$injector:nomod] Module 'atTheMS' 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.

它说它发生在(anonymous function) albumService.js:27

(function (app) {
var albumService = function ($http, albumApiUrl) {
    var getAll = function () {
        return $http.get(albumApiUrl);
    };
    var getById = function (id) {
        return $http.get(albumApiUrl + id);
    };
    var update = function (album) {
        return $http.put(albumApiUrl + album.Id, album);
    };
    var create = function (album) {
        return $http.post(albumApiUrl, album);
    };
    var destroy = function (album) {
        return $http.delete(albumApiUrl + album.Id);
    };
    return {
        getAll: getAll,
        getById: getById,
        update: update,
        create: create,
        delete: destroy
    };
};
app.factory("albumService", albumService);
}(angular.module("atTheMS")));

在使用(angular.module("atTheMS"))的其他文件上不会发生错误,这是因为复制了另一个工厂而生成的,除了单词" album"取而代之的是" book"该模块是" atTheLibrary"我在该页面上没有错误。我很困惑为什么会有所不同。任何帮助将不胜感激,谢谢。

根据要求,这里是视图:

@section scripts {
    <script src="~/Scripts/angular.js"></script>
    <script src="~/Scripts/angular-route.js"></script>
    <script src="~/Client/Scripts/Album/albumService.js"></script>
    <script src="~/Client/Scripts/Album/atTheMS.js"></script>
    <script src="~/Client/Scripts/Album/ListController.js"></script>
    <script src="~/Client/Scripts/Album/DetailsController.js"></script>
    <script src="~/Client/Scripts/Album/EditController.js"></script>
}

<div data-ng-app="atTheMS">
    <ng-view></ng-view>
</div>
<hr />

2 个答案:

答案 0 :(得分:1)

您的IIFE格式不正确,基本上您错开了右括号位置)

应该只是

<强>代码

(function (app) {

   //inner code should be as is

})(angular.module("atTheMS"));

答案 1 :(得分:1)

检查您正在初始化模块的文件 - atTheMS。必须先初始化/加载角度模块,然后才能在该模块中创建工厂。从HTML中可以看出,文件albumService.js是在atTheMS.js文件之前加载的。尝试在atTheMS.js文件后加载albumService.js文件。