输入输入时如何限制对我的后端的 md-autocomplete 调用?
How to throttle md-autocomplete calls to my back-end when typing into an input?
我在我的一个网络表单上使用 angular md-autocomplete
输入。我已经完成所有设置并且运行良好。
不出所料,每当我在自动完成输入中键入新字符时,都会调用我的后端以获取自动完成数据。问题是我不想每次输入新字符时都进行后端调用。我只希望在自上次进行后端调用以来已经 x 秒后触发后端调用。
这是输入字符时调用的函数:
function autocomplete(inputValue) {
var deferred = $q.defer();
portalState.apiPost(
'api/cats/search',
{
SearchType: 'all',
SearchTerm: inputValue
},
function(response) {
deferred.resolve(response.data);
},
function(response) {
deferred.resolve(null);
});
return deferred.promise;
}
这是我尝试加入任何节流逻辑之前的工作函数。我在设置节流逻辑时遇到的主要问题是我不知道 return 什么不会导致 angular 抛出错误,例如:
function autocomplete(inputValue) {
var isCool = false;
if(isCool) {
var deferred = $q.defer();
portalState.apiPost(
'api/cats/search',
{
SearchType: 'all',
SearchTerm: inputValue
},
function(response) {
deferred.resolve(response.data);
},
function(response) {
deferred.resolve(null);
});
return deferred.promise;
}
else {
//is there some sort of
//empty promise I can return
//so that angular won't
//throw an error
}
}
那我return不想打后端电话怎么办?或者是否有更简单的方法来限制 angular md-autocomplete
输入?
如果您查看 Angular Material 上的文档,您可以设置两件事。
使用 md-min-length
在后端开始搜索的字符数
或者 md-delay
的时间量(以毫秒为单位)
请在此处查看md-autocomplete
我在我的一个网络表单上使用 angular md-autocomplete
输入。我已经完成所有设置并且运行良好。
不出所料,每当我在自动完成输入中键入新字符时,都会调用我的后端以获取自动完成数据。问题是我不想每次输入新字符时都进行后端调用。我只希望在自上次进行后端调用以来已经 x 秒后触发后端调用。
这是输入字符时调用的函数:
function autocomplete(inputValue) { var deferred = $q.defer(); portalState.apiPost( 'api/cats/search', { SearchType: 'all', SearchTerm: inputValue }, function(response) { deferred.resolve(response.data); }, function(response) { deferred.resolve(null); }); return deferred.promise; }
这是我尝试加入任何节流逻辑之前的工作函数。我在设置节流逻辑时遇到的主要问题是我不知道 return 什么不会导致 angular 抛出错误,例如:
function autocomplete(inputValue) { var isCool = false; if(isCool) { var deferred = $q.defer(); portalState.apiPost( 'api/cats/search', { SearchType: 'all', SearchTerm: inputValue }, function(response) { deferred.resolve(response.data); }, function(response) { deferred.resolve(null); }); return deferred.promise; } else { //is there some sort of //empty promise I can return //so that angular won't //throw an error } }
那我return不想打后端电话怎么办?或者是否有更简单的方法来限制 angular md-autocomplete
输入?
如果您查看 Angular Material 上的文档,您可以设置两件事。
使用 md-min-length
或者 md-delay
请在此处查看md-autocomplete