我的代码就像这样
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
当我只注入我的第一个服务时,它的工作正常。但是当它第二次出现时就会中断 任何人都可以指出我做错了吗?
答案 0 :(得分:4)
问题是你有两个模块
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]);
答案 1 :(得分:-1)
我注意到的第一件事是代码本身需要更好地组织才能诚实,但无论如何。 第二件事是你需要将你创建的模块添加到&#34; RateRequestApp.controllers&#34;模块。因此代码完全类似于:
angular.module('RateRequestApp.controllers', ['RateRequestApp.services']).controller
这个+上一个答案应该可以解决问题。 祝你好运