2016-04-21 4 views
1

У меня есть текстовое поле, в котором пользователь будет набирать имя своего региона, и я покажу ему несколько вариантов, основанных на его типизации. Я делаю api-вызов, чтобы получить возможные данные. Api записывается в nodejs. Я использую bootstrap.typeahed, чтобы показать возможные предложения. Я делаю вызов api всякий раз, когда пользователь вводит письмо. Это сделано, но я столкнулся с проблемой, если пользователь печатает очень быстро. Затем вызовы api не возвращаются в том же порядке, который они вызывали, поэтому пользователь иногда видит неправильные данные. Как предотвратить это? В угловом я могу отклонить вызов api, если более поздний вызов api уже закончился?Отображение предложений в текстовом поле в angularjs

+1

Довольно распространенная проблема, попробуйте отложить обновление вашего нг-модели путем дребезга его с помощью опции нг-модели. Вот документация - 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