我有一个angularJs应用程序,只需单击一个链接即可进行api调用。但每当我点击链接时,它会向服务器发送2个相同的api调用。为什么会发生这种情况,我该如何解决这个问题。
我的服务就像: 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;
}
});
查看: 点击此链接会调用发送重复请求的getSlots
<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>
问题:对于单个触发器,浏览器会发送重复请求,如下所示。第一个调用没有回调,但第二个调用有回调:
someuls?$expand=something&_=1432722651197
someuls?$expand=something&_=1432722651197
答案 0 :(得分:0)
我遇到了类似的问题,我通过检查this answer来解决这个问题。我在HTML中声明了“ng-controller”,并使用routeProvider路由到它。修复了HTML中删除“ng-controller”属性的问题。
希望这有帮助。