Javascript 使用多个$http.get的AngularJS服务

Javascript 使用多个$http.get的AngularJS服务,javascript,angularjs,Javascript,Angularjs,我正在尝试学习AngularJS,我有下面的服务可以使用,但是我想知道是否有更好的方法来编写它,它更简单,代码重复更少。你能想到什么吗 服务: app.service("myService", function ($http) { this.callData1 = function () { var url = myurl1; function getData() { return $http.get(url);

我正在尝试学习AngularJS,我有下面的服务可以使用,但是我想知道是否有更好的方法来编写它,它更简单,代码重复更少。你能想到什么吗

服务:

app.service("myService", function ($http) {
    this.callData1 = function () {
        var url = myurl1;
        function getData() {
            return $http.get(url);
        }
        return {
            getData: getData,
        }
    },
    this.callData2 = function () {
        var url = myurl2;
        function getData() {
            return $http.get(url);
        }
        return {
            getData: getData,
        }
    },
    this.callData3 = function () {
        var url = myurl3;
        function getData(var1, var2) {
            return $http({
                url: url,
                method: "GET",
                params: { var1: var1, var2: var2 }
            });
        }
        return {
            getData: getData,
        }
    }
});
我的控制器:

app.controller("myController", function ($scope, myService) {
    myService.callData1().getData().then(function (response) {
        $scope.var1 = response.data;
    });
    myService.callData2().getData().then(function (response) {
        $scope.var2 = response.data;
    });
    var var1 = "something";
    var var2 = "something else";
    myService.callData3().getData(var1, var2).then(function (response) {
        $scope.var3 = response.data;
    });
});

您可以将其概括如下:

app.service("myService", function ($http) {
    this.getData = function(url, method, params){
        var httpParams = {
            url: url,
            method: method || "GET", // If method is skipped, use "GET" by default
            params: params || {} // If no params are given, take {}
        };
        return $http.get(httpParams);
    };
});
app.controller("myController", function ($scope, myService) {
    var url = "https://blahblah";
    myService.getData(url).then(function (response) {
        $scope.var1 = response.data;
    });
    var params = {var1: "something", var2: "something2"};
    myService.getData(url, "POST", params).then(function (response) {
        $scope.var1 = response.data;
    });
});
在controller中,您可以按如下方式使用此服务:

app.service("myService", function ($http) {
    this.getData = function(url, method, params){
        var httpParams = {
            url: url,
            method: method || "GET", // If method is skipped, use "GET" by default
            params: params || {} // If no params are given, take {}
        };
        return $http.get(httpParams);
    };
});
app.controller("myController", function ($scope, myService) {
    var url = "https://blahblah";
    myService.getData(url).then(function (response) {
        $scope.var1 = response.data;
    });
    var params = {var1: "something", var2: "something2"};
    myService.getData(url, "POST", params).then(function (response) {
        $scope.var1 = response.data;
    });
});

与你的问题无关,但为什么学习与否?AngularJS是V1,AngularJS实际上在V11中。引用自:“本网站及其所有内容都是指AngularJS(版本1.x),如果您正在寻找最新的AngularJS,请访问Angular.io。”