我已从服务器下载支持搜索..现在搜索开始我绑定更改事件以从输入发送请求到服务器的条件
现在它在用户输入时不断向服务器发送呼叫,因此我制作了一些代码,因此如果用户正在键入并仅发送最后一个请求,则取消之前的呼叫。 这是在用户输入时调用的方法
var currentAjax = null;
var canceller = $q.defer();
var cancel = function (reason) {
canceller.resolve(reason);
};
$scope.callAjax = function (isSearch) {
if ($scope.ajaxOptions) {
if (currentAjax != null) {
console.log("here");
currentAjax.cancel("user cancel");
}
currentAjax = null;
$scope.isLoading = true;
if (isSearch) {
$scope.inputModel = [];
}
var _request = {};
_request.url = '';
_request.method = 'POST';
// _request.headers = {'Content-Type': 'JSON'}
if ($scope.ajaxOptions.url) {
_request.url = $scope.ajaxOptions.url;
}
if ($scope.ajaxOptions.method) {
_request.method = $scope.ajaxOptions.method;
}
if ($scope.ajaxOptions.headers) {
_request.headers = $scope.ajaxOptions.headers;
}
_request.data = $scope.ajaxOptions.prepareRequest($scope.getParams());
_request.timeout = canceller.promise;
var promise = $http(_request).
success(function (data, status, headers, config) {
currentAjax = null;
$scope.isLoading = false;
// some code
}).
error(function (data, status, headers, config) {
$scope.isLoading = false;
});
currentAjax = {
promise: promise,
cancel: cancel
};
}
}
它完成了取消请求,但它也取消了最后一个请求,我怎么能防止假设用户输入“angul” 它应该请求“a”,“an”,“ang”,“angu”,而不是“angul”..
会在 isteven-multi-select-twinked.js 行号:615
中找到此方法