angularjs – 角度ng变化延迟
发布时间:2020-12-17 09:06:56 所属栏目:安全 来源:网络整理
导读:我有一个输入,过滤ng重复列表的变化。重复包含大量数据,并需要几秒钟来过滤一切。我希望他们的0.5秒延迟,我开始过滤过程。在创建这个延迟的角度的正确方法是什么? 输入 input ng-model="xyz" ng-change="FilterByName()" / 重复 div ng-repeat"foo in ba
我有一个输入,过滤ng重复列表的变化。重复包含大量数据,并需要几秒钟来过滤一切。我希望他们的0.5秒延迟,我开始过滤过程。在创建这个延迟的角度的正确方法是什么?
输入 <input ng-model="xyz" ng-change="FilterByName()" /> 重复 <div ng-repeat"foo in bar"> <p>{{foo.bar}}</p> </div> 过滤功能 $scope.FilterByName = function () { //Filtering Stuff Here }); 谢谢
AngularJS 1.3
由于AngularJS 1.3,你可以利用debounce属性 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> JS: 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); }; } ]); – 要么 – Check the Fiddle 之前的AngularJS 1.3 你必须使用$ timeout添加一个延迟,并且可能使用$ timeout.cancel(previoustimeout),你可以取消任何先前的超时,并运行新的超时(有助于防止过滤被执行多次在一个时间间隔) 这里是一个例子: app.controller('MainCtrl',$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); } }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |