Как правильно внедрить зависимость в модуле Angular в веб-API?

0

У меня есть файл objectFactory.js:

(function () {
    var objectiveFactory = function ($http, $ngAnimate) {
        debugger;
        return {
            getObjectives: function () {                
                return $http.get('/api/Objective/');
            }
        };

    };
    debugger;
    try {
        //objectiveFactory.$inject = ['$http', '$ngAnimate'];// not working
        objectiveFactory.$inject = ['$http'];// perfectly works!
        angular.module('app', []).factory('objectiveFactory', objectiveFactory);
    }
    catch (e)
    {
        var e1 = e;
    }

}());

Это действительно странно, однако, если я добавлю новую зависимость ngAnimate:

objectiveFactory.$inject = ['$http', '$ngAnimate'];// not working

Тогда у меня есть ошибка:

angular.js: 13920 Ошибка: [$ injector: unpr] Неизвестный поставщик: ngAnimateProvider <- ngAnimate <- objectFactory http://errors.angularjs.org/1.5.8/ $ инжектор /unpr? p0 = ngAnimateProvider %20% [CN10 ] %20ngAnimate %20% 3C- %20objectiveFactory на angular.js: 68 at angular.js: 4511 at Object.getService [as get] (angular.js: 4664) на угловой.js: 4516 at getService (angular.js: 4664) при инъекцииArgs (angular.js: 4688) в Object.invoke(angular.js: 4710) в Object.enforcedReturnValue [as $ get] (angular.js: 4557) в Object.invoke(angular.js: 4718) at angular.js: 4517

Но '$http' injecion отлично работает.

Я изучил много информации и дважды проверял следующие рекомендации в своем приложении Web API:

  1. Я проверил версии angular'js file и angular-animate.js и они совпадают с 1.5.8.

  2. Я исключил минимизацию и группировку, поэтому файлы загружаются, как следующий фрагмент кода:

    <script src="@Url.Content("~/Scripts/jquery-1.10.2.js")"></script>
    <script src="@Url.Content("~/Scripts/bootstrap.js")"></script>
    <script src="@Url.Content("~/Scripts/angular.js")"></script>
    <script src="@Url.Content("~/Scripts/angular-route.js")"></script>
    <script src="@Url.Content("~/Scripts/angular-animate.js")"></script>
    <script src="@Url.Content("~/Scripts/objectiveFactory.js")"></script>
    <script src="@Url.Content("~/Scripts/objective.js")"></script>
    

Однако ошибка такая же:

angular.js: 13920 Ошибка: [$ injector: unpr] Неизвестный поставщик:

Кто-нибудь знает, что я сделал неправильно? ('$http' injecion отлично работает)

Теги:
asp.net-mvc

1 ответ

1
Лучший ответ

ngAnimate - это имя модуля, и вы должны ввести ngAnimate в свой основной модуль. angular.module('app', []) здесь ваш основной модуль:

angular.module('app', [$ngAnimate']).factory('objectiveFactory', objectiveFactory);
  • 0
    извини, я забыл об этом. Однако, если я пишу с помощью $ngAnimate , ошибка будет той же.
  • 1
    Не $ngAnimate , просто $animate $ngAnimate .
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню