输入输入时如何限制对我的后端的 md-autocomplete 调用?

Posted

技术标签:

【中文标题】输入输入时如何限制对我的后端的 md-autocomplete 调用?【英文标题】:How to throttle md-autocomplete calls to my back-end when typing into an input? 【发布时间】:2016-12-27 19:54:50 【问题描述】:

我在我的一个 Web 表单上使用角度 md-autocomplete 输入。我已经完成了所有设置,并且运行良好。

正如预期的那样,每当我在自动完成输入中键入一个新字符时,都会调用我的后端来获取自动完成数据。问题是我不想每次输入新字符时都进行后端调用。我只希望在自上次进行后端调用后已经过了 x 秒时触发后端调用。

输入字符时调用的函数如下:

函数自动完成(输入值)
    var deferred = $q.defer();

    门户状态.apiPost(
        'api/猫/搜索',
        
            搜索类型:'全部',
            搜索词:输入值
        ,
        功能(响应)
            deferred.resolve(response.data);
        ,
        功能(响应)
            deferred.resolve(null);
        );

    返回 deferred.promise;

这是我在尝试加入任何节流逻辑之前的工作功能。当我输入节流逻辑时,我遇到的主要问题是我不知道返回什么不会导致 angular 抛出错误,例如:

函数自动完成(输入值)
    var isCool = 假;

    如果(是酷)
        var deferred = $q.defer();

        门户状态.apiPost(
            'api/猫/搜索',
            
                搜索类型:'全部',
                搜索词:输入值
            ,
            功能(响应)
                deferred.resolve(response.data);
            ,
            功能(响应)
                deferred.resolve(null);
            );

        返回 deferred.promise;
    
    别的 
        //有没有什么
        //空的承诺我可以返回
        //所以角度不会
        //抛出一个错误
    

如果我不想进行后端调用,我可以返回什么?还是有更简单的方法来限制角度 md-autocomplete 输入?

【问题讨论】:

您可以在后端开始搜索之前设置多个字符 【参考方案1】:

如果您查看有关 Angular Material 的文档,您可以设置两件事。

使用md-min-length在您的后端开始搜索的字符数

或者还有md-delay的毫秒数

请在此处查看md-autocomplete

【讨论】:

以上是关于输入输入时如何限制对我的后端的 md-autocomplete 调用?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 uitextfield 字符范围限制为 10 位

如何配置我的 Nuxt 前端应用程序以了解使用 Strapi 的后端的 baseUrl?

限制对 Angular2 Web 应用程序后端的访问?

如何限制字符输入“cin”只得到一个字符串

将输入框限制为仅数字 0-9 [重复]

有评论时MySql Query不运行