1

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

正如预期的那样,每当我在自动完成输入中键入一个新字符时,都会调用我的后端来获取自动完成数据。问题是我不想每次输入新字符时都进行后端调用。我只希望自上次进行后端调用以来已经过了 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输入?

4

1 回答 1

3

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

一些字符开始在你的后端搜索md-min-length

或者还有以毫秒为单位的时间量md-delay

请在此处查看md-autocomplete

于 2016-08-20T23:44:54.843 回答