У меня есть текстовое поле, в котором пользователь будет набирать имя своего региона, и я покажу ему несколько вариантов, основанных на его типизации. Я делаю api-вызов, чтобы получить возможные данные. Api записывается в nodejs. Я использую bootstrap.typeahed, чтобы показать возможные предложения. Я делаю вызов api всякий раз, когда пользователь вводит письмо. Это сделано, но я столкнулся с проблемой, если пользователь печатает очень быстро. Затем вызовы api не возвращаются в том же порядке, который они вызывали, поэтому пользователь иногда видит неправильные данные. Как предотвратить это? В угловом я могу отклонить вызов api, если более поздний вызов api уже закончился?Отображение предложений в текстовом поле в angularjs
1
A
ответ
2
Используйте ng-model-options и установите debounce
для вызова API по истечении таймера. Если кто-то быстро набирает текст, он будет захватывать более одной буквы и более медленным темпом по одной букве за раз. Это приведет к сокращению пространства, поэтому смешивания не будут. Если задержка короткая, она будет плавно перемещаться без заметной задержки.
Добавить это приписывать к вашему элементу
ng-model-options="{ debounce: 400 }"
2
Попробуйте ng-model-options
, чтобы добавить задержку при изменении модели.
<input ng-model="model" ng-model-options="{updateOn: 'default blur', debounce: { 'default': 700, 'blur': 0 }}"></input>
+0
Благодарим вас за ответ. – decon
Довольно распространенная проблема, попробуйте отложить обновление вашего нг-модели путем дребезга его с помощью опции нг-модели. Вот документация - https://docs.angularjs.org/api/ng/directive/ngModelOptions –