2015-06-10 88 views
0

現在我正在使用jQuery來確定輸入何時開始輸入,然後暫停。Angularjs在輸入中輸入時暫停

var timeoutId; 
$('#container').on('input propertychange change', 'form', function(e) { 
    clearTimeout(timeoutId); 
    timeoutId = setTimeout(function() { 
     console.log("paused"); 
    }, 3000); 
}); 

我正在嘗試找到一個合適的Angularjs解決方案來完成此任務。

我想我需要使用ng-change或類似於我的輸入區域,但我是新來的角和任何建議將不勝感激。

回答

2

找到答案。你會這樣做,其中3000是你想要等待的毫秒數量。

<input ng-change="functionToRun()" ng-model-options="{debounce: 3000}" /> 
0

編輯:@bryan有正確的答案!

您可以對輸入和$ timeout服務使用ng-change指令來處理暫停事件。

工作plunker:

http://plnkr.co/edit/Y6NtjabxeGaQpOIif1U3?p=preview

<body ng-app="inputExample"> 
    <script> 
    angular.module('inputExample', []) 
     .controller('ExampleController', ['$timeout', '$scope', function($timeout, $scope) { 
     $scope.checkPause = function() { 
      $timeout.cancel($scope.pause); 
      $scope.pause = $timeout(function() { 
      alert("pause"); 
      }, 1000); 
     }; 
     }]); 
    </script> 
    <div ng-controller="ExampleController"> 
    <form name="myForm"> 
     <label> 
     User name: 
     <input ng-change="checkPause()" type="text" name="userName" ng-model="user.name" required> 
     </label> 
    </form> 
    </div> 
</body>