我有一个文本框,用户可以在其中输入他的地区名称,我根据他的打字向他展示了一些选项。我正在进行api调用以获取可能的数据。 api是用nodejs编写的。我正在使用bootstrap.typeahed来显示可能的建议。每当用户键入一个字母时,我都会进行api调用。这已经完成,但如果用户输入速度非常快,我就会遇到问题。然后api调用没有以它们被调用的相同顺序返回,因此用户有时会看到错误的数据。怎么预防这个?如果以后的api呼叫已经结束,我可以拒绝api呼叫吗?
答案 0 :(得分:2)
尝试ng-model-options
在模型更改时添加延迟。
<input ng-model="model" ng-model-options="{updateOn: 'default blur', debounce: { 'default': 700, 'blur': 0 }}"></input>
答案 1 :(得分:2)
使用ng-model-options并设置debounce
以在计时器到期时调用api。
如果某人正在快速打字,它将捕获多个字母,并且每次一个字母的速度较慢。这会给你一点空间,所以没有混乱。如果延迟很短,它将顺利移动,没有明显的延迟。
将此属性添加到元素的属性中
ng-model-options="{ debounce: 400 }"