2016-10-12 3 views
2

У меня есть это поле:Как я могу отложить изменение модели до тех пор, пока не закончу ввод?

<input ng-model="phs.englishRange" 
        style="width:6rem;" 
        type="text" /> 

Слово используется в фильтре так, когда я делаю какие-либо изменения в ней замены фильтра в то время как изменения были сделаны. Есть ли способ, которым я могу отложить это изменение модели через 1 секунду после того, как я перестаю печатать?

+0

Вы используете '$ watcher'? – Satpal

+0

Нет, я не знаю о $ watcher. Значение модели используется в фильтре ng-repeat: ng-repeat = "row in phs.phrasesView = (phs.phrases | keywordRange: phs.englishRange)" – Alan2

ответ

5

Для вашего потребительной случае, чтобы вызвать модели 1s обновления после последнего символа напечатал (таймер обновления модели будет сбрасываться каждый раз):

ng-model-options="{ updateOn: 'default', debounce: {'default': 1000} }" 

Другие варианты - обновление размытости:

ng-model-options="{ updateOn: 'blur' }" 

Параметры «по умолчанию» (по мере ввода) и/или «размытие» (когда вы покидаете вход).

Вы также можете использовать debounce внутри параметров модели, чтобы контролировать, как быстро обновлять модель.

debounce: { 'default': 500, 'blur': 0 } 
+0

Означает ли это, что это не только при перемещении курсора в другое поле ? – Alan2

+0

Да, вы можете использовать debounce: {'default': 1000} для этого –