Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将多个服务注入控制器会引发错误-AngularJs_Angularjs - Fatal编程技术网

将多个服务注入控制器会引发错误-AngularJs

将多个服务注入控制器会引发错误-AngularJs,angularjs,Angularjs,我的代码是这样的 Services.JS angular.module('RateRequestApp.services', []).factory('rateRequestService', ['$http', rateRequestService]); function rateRequestService($http) { var service = { getData: getData}; return service; function getData

我的代码是这样的

Services.JS
    angular.module('RateRequestApp.services', []).factory('rateRequestService', ['$http', rateRequestService]);

function rateRequestService($http) {
    var service = { getData: getData};
    return service;
    function getData() {
        return $http({
            method: 'Get',
            url: '../services/asas.asmx/GetReadOnlyData?shipmentID=' + getQuery('shipmentId')
        });
    }
    function getQuery(name) {
        var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
        return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
    }
}

angular.module('RateRequestApp.services', []).factory('rePrintService', ['$http', rePrintService]);
function rePrintService($http) {
    var service = { getReprintData: getReprintData };
    return service;
    function getReprintData() {
        return $http({
            method: 'Get',
            url: '../services/asas.asmx/RePrint?shipmentID=' + getQuery('shipmentId')
        });
    }
    function getQuery(name) {
        var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
        return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
    }

}


Controller.JS


    angular.module('RateRequestApp.controllers', []).controller
('ReadOnlyController', [
    '$scope', 'rateRequestService', 'rePrintService', '$controller',
    function($scope, rateRequestService, rePrintService, $controller) {
        $scope.rateData = [];
        rateRequestService.getData().success(function(response) {
                $scope.rateData = response;
                console.log(JSON.stringify(response));
            }).
            error(function(data, status, headers, config) {});
        rePrintService.getReprintData().success(function(response) {
            }).
            error(function(data, status, headers, config) {});

    }
]);

App.js
angular.module('RateRequestApp', [
   'RateRequestApp.services',
   'RateRequestApp.controllers',
   'ui.bootstrap'
]);
我觉得一切都很好,但这是个错误

Error: [$injector:unpr] Unknown provider: rateRequestServiceProvider <- rateRequestService

错误:[$injector:unpr]未知提供程序:rateRequestServiceProvider问题是您有两个模块

angular.module('RateRequestApp.services', [])
定义,因此第二个将覆盖包含
rateRequestService
服务的第一个

要正确检索现有模块,需要使用getter语法:

angular.module('RateRequestApp.services').factory('rePrintService', ['$http', rePrintService]);
请注意,模块名称后面没有依赖项数组
[]

或者您可以使用如下的链表示法:

angular.module('RateRequestApp.services', [])
.factory('rateRequestService', ['$http', rateRequestService])
.factory('rePrintService', ['$http', rePrintService]);

我注意到的第一件事是,代码本身需要更好地组织起来,但无论如何。 第二件事是,您需要将创建的模块添加到“RateRequestApp.controllers”模块中。因此,代码完全类似于:

angular.module('RateRequestApp.controllers', ['RateRequestApp.services']).controller
这+上一个答案应该可以。
祝你好运

你能在这里添加一个解决方案吗?我可以使用我的两项服务吗?@Athul在你上面的问题中,你刚刚定义了你的两项服务,但从未使用过,也许你必须提供关于你的使用的进一步信息,即你使用服务的控制器。