24

これがどのように行われるかの例をグーグルで検索することはできません。

関数が変更されるたびに関数を呼び出すテキストボックスを正常に作成しました。私がやりたいことは、ユーザーが入力を x ミリ秒停止したときにのみ関数を呼び出すことです。

キーアップイベントを使用してJQueryでそれを行う方法を知っており、おそらくこの方法で機能させることができますが、「Angular Way」で行いたいと考えています。

編集

タグやテキストからは明確ではなかったかもしれませんが、私は AngularJS を使用しており、そのフレームワークに正しい方法論を使用してこの遅延機能を作成したいと考えています。

4

3 に答える 3

28

ng-model-optionsこのようにある

<input id="delayedModel" ng-model="delayedModel" ng-change="callDelayed()" ng-model-options="{ updateOn: 'default blur', debounce: {'default': 500, 'blur': 0} }" />

このcallDelayedメソッドは、最後の文字を入力してから 500 ミリ秒後またはぼかし時にのみ呼び出されます

ここにドキュメントがありますhttps://docs.angularjs.org/api/ng/directive/ngModelOptions

于 2014-12-31T15:23:49.573 に答える
23

角度のあるアプローチの場合$timeout、コントローラーに依存関係として挿入し、で$watch割り当てたスコープ変数で使用できますng-model

var timer=false;
$scope.ModelName='foo';
$scope.$watch('ModelName', function(){
  if(timer){
      $timeout.cancel(timer)
  }  
  timer= $timeout(function(){
      /* run code*/
   },delay)
});
于 2013-03-30T21:09:29.647 に答える