Angular Service注入不起作用

时间:2016-01-28 01:27:24

标签: angularjs

我已创建并将服务(myService)注入我的应用程序(app),但它无效。该错误意味着我没有在任何地方定义服务:

错误:[$ injector:unpr]未知提供者:myServiceProvider< - myService< - myController

myService调用另一个服务--ajaxService来执行实际的http调用。

我试图在myController中调用myService时,我认为myService抛出上述错误的唯一原因是因为我在应用程序定义中定义了另一个模块( common.components )。这个模块有自己独立的服务,我在我的应用程序的其他地方使用。我想知道应用程序是否在common.components模块中搜索myService的定义而不是内部。 这是我的代码:

- app.js

var app = angular.module('app ', ['ngRoute','common.components']);

- myService.js

var serviceId = 'myService';
angular.module('app').service(serviceId,['$q','ajaxService','$log',myService]);

function myService($q, ajaxService, $log){
    var states = [];
    this.getStates = function() {
        var defered = $q.defer(); 
        ajaxService.getStates().then(function(result){
            states = result.data;
            defered.resolve(states);
        },
        function(error){
            deferred.reject();
        });
        return defered.promise;


    };

}

- ajaxService.js

var serviceId = 'ajaxService';
angular.module('app',[]).service(serviceId,['$http','$log',ajaxService]);

function ajaxService($http,$log){
  this.getStates = function() {
        return $http.get('./json/DATA.json');
  };   

}
  • myController.js

(函数(){ 'use strict';

angular.module('app').controller('myController',['$scope','$log','myService',myController]);

function myController($scope,$log,myService){ 

    $scope.states = [];

    myService.getStates().then(function(states){
        $scope.states = states;
    });            
}

})();

我一直试图找出几个小时的错误,但我迷路了。有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

我已经更新了我的答案,因为您现在提供了更多信息。

您的问题出在您的ajaxService.js

更改此行

angular.module('app',[]).service(serviceId,['$http','$log',ajaxService]);

到这个

angular.module('app').service(serviceId,['$http','$log',ajaxService]);

您正在通过添加[]来重新创建应用模块。