Javascript 如何防止在AngularJs中单击发送重复请求

Javascript 如何防止在AngularJs中单击发送重复请求,javascript,ajax,angularjs,http,Javascript,Ajax,Angularjs,Http,我有一个angularJs应用程序,它有一个api调用,只需点击一个链接。但每次我点击链接,它都会向服务器发送两个相同的api调用。发生这种情况的原因以及如何解决此问题 我的服务就像:某物服务 function getData() { return apiSettings.getApiInformation().then(function (response) { var url = response.data.Url + "/odata/Something?$expa

我有一个angularJs应用程序,它有一个api调用,只需点击一个链接。但每次我点击链接,它都会向服务器发送两个相同的api调用。发生这种情况的原因以及如何解决此问题

我的服务就像:某物服务

 function getData() {
    return apiSettings.getApiInformation().then(function (response) {
        var url = response.data.Url + "/odata/Something?$expand=Something";

            var data = {
                url: url,
                type: "GET",
                token: response.data.Token,
                data: {},
                async: true,
                cache: false,
                headers: {
                         "accept": "application/json; charset=utf-8",
                         'Authorization': 'Bearer ' + response.data.Token
                       },
                dataType: "json",
                success: {},
                error: {},
                complete: {},
                fail:{}
            };
            return $http(data);
    });   
}
Api设置:

angular.module('myApp.services')
.factory('apiSettings', apiSettings);

apiSettings.$inject = ['$http'];

function apiSettings($http) {
    return {
            getApiInformation: function () {
               return $http.get(baseUrl+ '/api/GetApiInformation', {cache: true});
            }
    }

}
var vm = this;
function getSlots(filterCriteria, selectedValue) {

    somethingService.getData().then(function (response) {
        if (response && response.value.length > 0) {               
            vm.someData = response.value;
        }
    });
something控制器:

angular.module('myApp.services')
.factory('apiSettings', apiSettings);

apiSettings.$inject = ['$http'];

function apiSettings($http) {
    return {
            getApiInformation: function () {
               return $http.get(baseUrl+ '/api/GetApiInformation', {cache: true});
            }
    }

}
var vm = this;
function getSlots(filterCriteria, selectedValue) {

    somethingService.getData().then(function (response) {
        if (response && response.value.length > 0) {               
            vm.someData = response.value;
        }
    });
查看: 单击此链接将调用发送重复请求的getSlots

 <a ui-sref="something" class="action-icons" id="slotNav"><i class="fa fa-square-o fa-fw"></i>
something
</a>

我有一个类似的问题,我通过检查解决了。我在HTML中声明了“ng控制器”,并使用routeProvider路由到它。通过删除HTML中的“ng控制器”属性修复了此问题


希望这有帮助。

哪个调用被复制
odata/something
api/getapinfo..
?为什么要同时使用angular的
$http
和jQuery的
$。ajax
?odata/有些东西正在被复制。对于每个odata get调用,有2个调用已完成。其他一切都很好。当我同时使用$http时,它的作用是相同的。我要更改的第一件事是使用angular的
$http
服务的
odata/something
调用
$http
位于angular的域内(关于作用域),因此它知道何时触发摘要循环,这是angular的驱动因素(包括数据绑定)。当我使用$http进行bothIt时,它做了同样的事情。getSlots似乎被调用了两次,您需要它查看它是如何被调用的。这可能就是问题所在。