javascript - 如何在 angularjs 中同时执行 $http

标签 javascript php angularjs wordpress

我有一个模块(应用程序),其中包含带有 $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/

相关文章:

php - Laravel 中带有 where 条件的数据库字段值的总和

php - codeigniter 4 : Response to preflight request doesn't pass access control check 中的 CORS 问题

angularjs - 将自定义服务注入(inject) ui-router 配置会引发错误 : Unknown provider: [Service]

javascript - 如何更改 Famo.us + Angular 中元素的 classList?

php - 如何制作按钮以删除mysql字段中的值?

javascript - 我被困在 multiplicativePersistence 算法问题上。我不知道为什么这段代码不起作用

android - Ionic 中的上传进度

javascript - 获取对没有唯一属性的对象的引用

javascript - 热成像调色板

javascript - document.exec() 不适用于 onchange