AngularJS 1.3+
AngularJS 1.3 के बाद से आप उस debounce
संपत्ति का उपयोग कर सकते हैं ngModelOptions
जो बिल्कुल आसान उपयोग किए बिना प्राप्त करने के लिए प्रदान करता है $timeout
। यहाँ एक उदाहरण है:
HTML:
<div ng-app='app' ng-controller='Ctrl'>
<input type='text' placeholder='Type a name..'
ng-model='vm.name'
ng-model-options='{ debounce: 1000 }'
ng-change='vm.greet()'
/>
<p ng-bind='vm.greeting'></p>
</div>
जे एस:
angular.module('app', [])
.controller('Ctrl', [
'$scope',
'$log',
function($scope, $log){
var vm = $scope.vm = {};
vm.name = '';
vm.greeting = '';
vm.greet = function greet(){
vm.greeting = vm.name ? 'Hey, ' + vm.name + '!' : '';
$log.info(vm.greeting);
};
}
]);
- या
फिडल को चेक करें
AngularJS से पहले 1.3
आपको देरी जोड़ने के लिए $ timeout का उपयोग करना होगा और शायद $ timeout.cancel (previoustimeout) के उपयोग के साथ आप किसी भी पिछले समय को रद्द कर सकते हैं और नए को चला सकते हैं (फ़िल्टरिंग को रोकने के लिए कई बार कंसोल से निष्पादित होने में मदद करता है) समय अंतराल)
यहाँ एक उदाहरण है:
app.controller('MainCtrl', function($scope, $timeout) {
var _timeout;
//...
//...
$scope.FilterByName = function() {
if(_timeout) { // if there is already a timeout in process cancel it
$timeout.cancel(_timeout);
}
_timeout = $timeout(function() {
console.log('filtering');
_timeout = null;
}, 500);
}
});
$timeout
500ms के लिए उपयोग करें ।$scope.FilterByName = function () { $timeout(_filterByName , 500)