我正在构建一个 Angular Directive(指令),它在输入值更改时运行一个函数,我想在运行此函数之前等待 300 毫秒,但如果在 300 毫秒之前值发生变化,我需要将延迟重置为 300 毫秒。因此,只有当值变化 300 毫秒时,该函数才应该运行:
我的代码
(function() {
'use strict';
angular
.module('address',[])
.directive('address', ['Address', function (Address) {
return {
restrict: 'E',
transclude: true,
templateUrl: 'partials/address.html',
link: function (scope, elem, attrs) {
var delay = "300";
scope.$watch('searchparam', function(){
if(!_.isUndefined(scope.searchparam) && scope.searchparam.length >= 3) {
// here i need some delay timer
Address.get(scope.searchparam).then(function(data){
console.log("data: ", data);
scope.addressList = data;
}, function(status){
console.log("status: ", status);
scope.errorHandler = status;
});
}
});
}
};
}]);
})();
address.get 是一个返回地址的异步服务
最佳答案
您想要做的是查看 debouncing 。它包含在大多数 JS 库中......并且是 standard as of AngularJS 1.3
关于javascript - 输入触发具有延时功能,输入值变化时等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30530145/