Diyelim ki, değiştiğinde, bir isteği tetikleyecek ve bazı sonuçları gösterecek bir giriş metni alanına (daha çok Google arama alanı gibi) sahip olduğumu varsayalım. ÖrneğinAngularJS - Bir sözün iptali nasıl yapılır?
, girişteki Dog
yılında
edelim türü: Şimdi
typed D -> Calls ctrl.search('D') -> Makes a request -> Changes model when success
typed DO -> Calls ctrl.search('DO') -> Makes a request -> Changes model when success
typed DOG -> Calls ctrl.search('DOG') -> Makes a request -> Changes model when success.
, en
DO
isteği sonra
DOG
birden tepki diyelim. Modelim,
DOG
yazmış olsam bile
DO
sonuçlarıyla sonuçlanacaktır.
Bu nedenle, karakterleri yazmaya devam edersem devam eden devam eden istekleri iptal etmenin veya iptal etmenin bir yoluna ihtiyacım var. Bu şekilde, modelim sadece son istekle değiştirildi.
Benim girdi benziyor aşağıdadır: Burada
<input type="text" class="form-control" data-ng-model="query" data-ng-change="ctrl.search(query)" placeholder="Search" />
olan benim
searchCtrl.js
: Bunun gibi
var search;
var language;
var _this;
var SearchCtrl = function (searchService, lang)
{
search = searchService;
langauge = lang;
_this = this;
}
SearchCtrl.prototype.search = function (text)
{
var promise = search.language(language)
.facet('characters')
.highlight('quotes')
.query(text);
promise.then(function (response) {
if(!response) return;
_this.total = response.total;
_this.count = response.found;
_this.result = response.data;
});
}
Bu ilişkiyi belirlemek için 'reject' veya' tamamlamak için resolve' gerek promise..either iptal edemez .. –
1) ng-model-options 2'yi kullanabilmeniz için metin kutunuzdaki geri dönüşü kullanın. 2) http seçeneğinin zaman aşımı özelliğine dair bir söz verebilirsiniz. iptal edebilirsiniz (ertelenmiş nesneyi reddederek), ancak istek yine de sunucu tarafından işlenecek ve sadece müşteri düzeyinde reddedilecektir. – PSL
Yazarak kısa bir duraklama oluşana kadar isteği ilk etapta göndermeyerek bu sorunu çözmek daha iyi olacaktır. İsteğin iptal edilmesi, sunucunun önceden almışsa işlemesini durdurmaz. https://docs.angularjs.org/api/ng/directive/ngModelOptions'a, geri dönme seçeneğini ayrıntılı olarak bakın. –