一尘不染

如何仅当用户完成键入时才使angularjs ngChange处理程序被调用

angularjs

我有一个input字段,我想在其中应用的变体ngChange

input字段与ajax调用绑定在一起,当用户更改输入时,服务器端将处理数据,但是,我不想太频繁地进行调用。

假设用户要输入一个真正的字符串,我希望仅在用户完成将要键入的单词后才能进行呼叫。不过,我不想使用诸如模糊之类的事件。有什么比实现更好的方法setTimeout呢?


阅读 190

收藏
2020-07-04

共1个答案

一尘不染

使用ng-model-options在角> 1.3

 <input type="text"
         ng-model="vm.searchTerm"
         ng-change="vm.search(vm.searchTerm)"
         ng-model-options="{debounce: 750}" />

没有ng-model-options-在标记中:

<input ng-change="inputChanged()">

在您的后备控制器/范围内

var inputChangedPromise;
$scope.inputChanged = function(){
    if(inputChangedPromise){
        $timeout.cancel(inputChangedPromise);
    }
    inputChangedPromise = $timeout(taskToDo,1000);
}

然后,您taskToDo将仅在1000ms不变后运行。

2020-07-04