0
我有一個angularJs應用程序,它通過點擊一個鏈接來進行api調用。但每次我點擊鏈接,它都會向服務器發送2個相同的API調用。爲什麼會發生這種情況,我如何解決這個問題如何通過在AngularJs中點擊一下來防止發送重複請求
我的服務就是這樣的: SomethingService
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});
}
}
}
SomethingController:
var vm = this;
function getSlots(filterCriteria, selectedValue) {
somethingService.getData().then(function (response) {
if (response && response.value.length > 0) {
vm.someData = response.value;
}
});
查看: 點擊此鏈接調用發送重複的請求
<a ui-sref="something" class="action-icons" id="slotNav"><i class="fa fa-square-o fa-fw"></i>
something
</a>
這個視圖顯示數據
<div ng-repeat="data in vm.someData">
<p> {{data.Name}}</p>
</div>
問題getSlots:對於單觸發瀏覽器將像下面這樣的重複請求。第一個電話沒有回調,但第二個電話有回調:
someuls?$expand=something&_=1432722651197
someuls?$expand=something&_=1432722651197
哪個調用正在被複制'odata/something'或'api/GetApiInfo..'?爲什麼你同時使用angular的'$ http'和jQuery的'$ .ajax'? – Brocco
odata /正在重複的東西。每撥打一個電話都會有2個電話完成。其他的事情都很好。當我爲兩者使用$ http時,它都會執行相同的操作。 –
我想改變的第一件事就是使用角的'$ http'服務的'odata/something'調用。 '$ http'生活在角域的範圍內(關於範圍),所以它知道何時觸發摘要循環,這是什麼驅動角(包括數據綁定) – Brocco