2016-04-21 11 views
1

我有一個文本框,用戶可以在其中輸入他的區域名稱,並根據他的打字方式向他顯示一些選項。我正在進行api調用以獲取可能的數據。 api是用nodejs編寫的。我正在使用bootstrap.typeahed來顯示可能的建議。每當用戶輸入一個字母時,我都會進行api調用。這樣做,但如果用戶輸入速度非常快,則會遇到問題。然後,api調用不會按照它們調用的順序返回,因此用戶有時會看到錯誤的數據。如何防止這一點?如果稍後的api調用已經結束,我可以拒絕api調用嗎?在angularjs的文本框中顯示建議

+1

很常見的問題,嘗試通過NG-模型選項防抖動它耽誤您的NG-模型的更新。這裏是文檔 - https://docs.angularjs.org/api/ng/directive/ngModelOptions –

回答

2

使用ng-model-options並設置debounce上的計時器到期調用API。 如果有人快速打字,它將一次捕捉多個字母,並以較慢的速度捕捉一個字母。這將會留下一點空間,所以沒有混淆。如果延遲很短,它會平穩移動,不會有明顯的延遲。


添加這歸因於你的元素
ng-model-options="{ debounce: 400 }"

+0

看起來它已經改進了解決方案。謝謝。 – decon

+0

@decon如果這有幫助,請標記爲正確答案。謝謝 –

+0

是的。感謝您的幫助。 – decon

2

嘗試ng-model-options在模型更改時添加延遲。

<input ng-model="model" ng-model-options="{updateOn: 'default blur', debounce: { 'default': 700, 'blur': 0 }}"></input> 
+0

謝謝你的回答。 – decon