1

У меня есть приложение ASP.NET MVC5, в котором я использую AngularJS. В этом случае у меня есть модуль под названием atTheMS с заводом для службы под названием albumService и 3 контроллерами: ListController, EditController и DetailsController. Обслуживание и контроллеры все зависит от 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")), и это было сгенерировано копированием другого завода, который у меня есть, который точно такой же, за исключением того, что слово «альбом» заменено словом «книга», а модуль «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 /> 
+0

Не могли бы вы высказать свой HTML-код? – Oleander

+0

@ Олеандер опубликовал в редактировании, спасибо. – jacksonSD

+0

Не должно быть 'angular.module (" atTheMS ", [])' btw? – Oleander

ответ

1

Проверьте в какой файл вы инициализации модуля - atTheMS. Перед созданием фабрики в этом модуле должен быть инициализирован/загружен угловой модуль. Из вашего HTML можно видеть, что файл albumService.js загружается перед файлом atTheMS.js. Попробуйте загрузить файл albumService.js после файла atTheMS.js.

+0

это была проблема. Спасибо, Пратик! – jacksonSD

1

Вы неверный формат IIFE, в основном вы потеряли закрытия позиции кронштейн ).

это должно быть просто

Код

(function (app) { 

    //inner code should be as is 

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

Это не сгенерирует ошибку * Модуль 'atTheMS' недоступен *, даже если это тоже проблема. – Oleander