我有一个模块(应用程序),其中包含带有 $http
的服务(globalService)。该模块现在包含在另一个模块(invoicesApp)中,该模块也有一个服务(invoicesService)。使用第二个模块的服务,我加载第一个服务的服务并返回一些信息。我遇到的问题是第一个服务的参数被第二个服务覆盖,因此两个 $http
都执行相同的请求。这是我的代码
这是我的第一个服务:
(function(angular){
var app = angular.module('app',[])
.config(function($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
})
.service('globalService', function($http, $location,$q){
console.log("globalService");
this.getPaging = function()
{
var deferred = $q.defer();
var paging_parameters = $location.search();
paging_parameters.action = "client_pagination";
var req = {
url: ajaxpagingscript.ajaxurl,
method: "GET",
params: paging_parameters
}
$http(req).success(function(paging_data) {
console.log("globalService " + JSON.stringify(paging_data));
deferred.resolve(paging_data.paging);
}).error(function(data, status, headers)
{
$scope.error = "";
});
return deferred.promise;
}
});
})(window.angular);
第二次服务:
(function(angular){
var invoicesApp = angular.module('invoicesApp',['ngRoute','app'])
.config(function($locationProvider,$routeProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
})
.controller('InvoicesController', ['$scope','transactionService',
function($scope,invoicesService) {
$scope.invoices = [];
console.log("testing");
var paging = invoicesService.getPaging();
var promise = invoicesService.getInvoicess();
promise.then(function(data)
{
console.log("invoices " +JSON.stringify(data));
angular.forEach(data.new_data, function(JSON_ARRAY) {
$scope.invoicearray.push(JSON_ARRAY);
});
});
}])
.service('invoicesService', function(globalService, $http,$location,$q){
this.getPaging = function() { return globalService.getPaging(); };
this.getInvoicess = function() {
var deferred = $q.defer();
var invoices_parameters = $location.search();
invoices_parameters.action = "collect_invoice_data";
var req = {
url: ajaxpagingscript.ajaxurl,
method: "GET",
params: invoices_parameters
};
$http(req).success(function(data) {
deferred.resolve(data);
}).error(function(data, status, headers)
{
$scope.error = "";
});
return deferred.promise;
};
});
})(window.angular);
两个服务的console.log,返回相同的数据。加载此应用程序的页面加载 invoicesApp
,因此 globalService 执行正常,但传递给 $http
的参数是错误的。谁能帮我吗?
最佳答案
您不需要调用该函数,如果您想在发票服务中执行此操作,则需要传递该函数的引用。
this.getPaging = function() { return globalService.getPaging(); };
应该是
this.getPaging = globalService.getPaging;
关于javascript - 如何在 angularjs 中同时执行 $http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30053296/