我正在创建类似example的内容,但对于搜索建议,请使用以下代码:
$scope.$watch('terms', function(newValue, oldValue) {
if (angular.equals(newValue, oldValue)) {
return;
}
getResults(); //$http.get...
});
如果我写得快,它会产生大量的ajax调用到我的服务器。但在示例中,您可以看到效果非常好,服务器不会对每次通话做出响应(我认为发生了什么)。
那么,做到这一点并防止滥用的最佳方法是在服务器端做些什么?
答案 0 :(得分:1)
如果您使用Angular> v1.3只使用ngModelOptions去抖动。
https://docs.angularjs.org/api/ng/directive/ngModelOptions
<input type="text" name="userName"
ng-model="user.name"
ng-model-options="{ debounce: 1000 }" />
所以更新会等待,例如1000ms直到触发更新。 应该是解决问题的好方法。