繁体   English   中英

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

[英]AngularJS service that uses multiple $http.get

我正在尝试学习 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;
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM