Angularjs - не удается разрешить необходимую зависимость при попытке использовать глобальный сервис

0

Я использую функцию, которая используется в более чем 1 контроллере, поэтому я решил создать сервис и использовать его во всем мире.

Вот почему я включил файл commonService.js в свой index.html

'use strict';
var myApp = angular.module('myAppName');
myApp.service(['loadHttpService', '$window', '$http', function (loadHttpService, $window, $http) {
    this.loadHttpService = function (url) {
        ...
        };
        return $http.jsonp(url, {
                params: {
                    callback: "JSON_CALLBACK"
                }
            })
            .then(function (response) {
                ...
            });    
    };
}]);

и использовал его в моем homeController, включая службу как зависимость, как показано ниже:

'use strict';    
angular.module('Home') 
.controller('HomeController', ['$scope', '$rootScope', '$http', '$window', '$state', 'loadHttpService',   
    function ($scope, $rootScope, $http, $window, $state, loadHttpService) {
        ...
        var url = "http://xxx";
        loadHttpService.loadHttp(url);

    }]);

Но это приводит меня к такой ошибке https://docs.angularjs.org/error/ $ injector/unpr? P0 = loadHttpServiceProvider %20% 3C- %20loadHttpService %20% 3C- %20HomeController

Почему это происходит и как это исправить?

Обратите внимание: myAppName - это имя моего приложения (используется в ng-приложении).

Я очень новичок в angularjs и не стесняюсь добавлять какие-либо подсказки, чтобы сделать это лучше.

  • 0
    Вы создаете два разных угловых модуля.
  • 0
    это потому, что myAppName для моего приложения, а Home это модуль для homecontroller
Показать ещё 3 комментария
Теги:

1 ответ

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

Существует много способов скинуть кошку или накладывать зависимости

module1 - общий

angular.module('commonServices', [])
  .service('myService', function () { //look ma, a service})

module2

angular.module('superApp', ['commonServices'])
  .controller('notMyCtrl', function (myService) { //look ma, a service from other module})

Module3

angular.module('homeApp', ['commonServices'])
  .controller('homeCtrl', function (myService) { //look ma, a service from other module})

или таким же образом вы можете ввести home модуль в родительский модуль (я не могу представить преимущества загрузки двух приложений на одной странице)

  • 0
    пожалуйста, не могли бы вы перефразировать ответ?
  • 0
    Я вижу, у вас есть два модуля: angular.module('myAppName') и angular.module('Home') Я думаю, вы не хотите увеличивать оба модуля с помощью ngApp или вручную. Вы вводите один модуль в другой?
Показать ещё 2 комментария

Ещё вопросы

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