javascript - 输入触发具有延时功能,输入值变化时等待

标签 javascript angularjs function

我正在构建一个 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/

相关文章:

在所有可能的组合上运行函数

javascript - 每秒更改颜色 ul li 为 "for loop"

javascript - 是否有任何算法来验证澳大利亚 TFN 号码?

php - 从 php 传递的 json 数组获取键 => 值

javascript - 是否可以将函数传递给动态模态?

javascript - 如何从 ng-repeat 获取输入值到 Controller

javascript - 如何使用 Django/Tastypie API 创建 CRUD?

c - 什么更有效率?

javascript - 如何根据一个参数函数计算年龄?

javascript - 如何通过 Javascript 显示 .text 文件内容并更改样式?