2014-12-24 2 views
2

Я новичок в AngularJs, и я не могу полностью понять проблему ниже.AngularJS - Ошибка в инжекции из другого модуля

В приведенном ниже примере имеются 2 услуги MongoRESTService & MongoRESTService2, определенные в модуле common-services.

Главный модуль olive зависит от common-services, а главный контроллер пытается вызвать функции в этих двух выше перечисленных службах.

Хотя я смог вызвать функцию MongoRESTService.get() успешно, MongoRESTService.queryMongoData() находится под ошибкой.

Сообщение об ошибке

angular.js:10126 Error: [$injector:unpr] http://errors.angularjs.org/1.2.28/$injector/unpr?p0=MongoRESTService2Provider%20%3C-%20MongoRESTService2

Unknown provider: MongoRESTService2Provider <- MongoRESTService2

Код

// services.js 

var oliveModule = angular.module('common-services') 

oliveModule.service('MongoRESTService', function($http, $q, $scope) { 

    this.get = function(path){ 
     ... 
    }; 
}); 

oliveModule.service('MongoRESTService2', function($scope, MongoRESTService) { 
    this.queryMongoData = function(){ 
     MongoRESTService.get('/clients').then(function(data){ 
      $scope.clients = ...; 
     }); 
    }; 
}); 


// main.js 
var oliveModule = angular.module('olive', ['common-services']); 

oliveModule .controller('MainController', 
    function($scope, $http, MongoRESTService, MongoRESTService2) { 
     //this line works 
     MongoRESTService.get('/clients').then(function(data){ 
      ... 
     }) 

     //this throws error 
     MongoRESTService2.queryMongoData(); 
    } 
); 

ответ

4

Это точно как ошибочные состояния,

поэтому попробуйте

oliveModule.service('MongoRESTService2',['$scope','MongoRESTService',function($scope, MongoRESTService) { 
    this.queryMongoData = function(){ 
     MongoRESTService.get('/clients').then(function(data){ 
      $scope.clients = ...; 
     }); 
    }; 
}]); 
+1

если вам нужны разъяснения, это известно как «обозначение массива» инъекции зависимостей .. https://docs.angularjs.org/гид/ди – yUdoDis

Смежные вопросы