我有以下代表搜索字段的 html:
<input ng-model-options="{ debounce: 500 }" type="text" ng-model="name">
以及以下js:
$scope.$watch('name', function(newVal, oldVal) {
if(newVal != oldVal) {
$scope.pageChanged($scope.sort, $scope.name, $scope.sortDirection);
}
});
现在,我的 pageChanged 函数对我的服务器进行 REST 调用,并根据排序和搜索信息(“名称”)返回实体列表。假设我的用户想要搜索“Tom”。我想避免我的应用程序进行三个休息调用(name =“T”,name =“To”,name =“Tom”)。
我尝试使用去抖来做到这一点,但似乎手表不能与去抖一起使用,所以我想知道用最少的代码实现此功能的最佳方法是什么?
您应该使用 ng-change 来完成此类事情,而不是连接手表。
<input ng-model-options="{ debounce: 500 }" type="text" ng-model="name" ng-change="modelChanged()">
JS:
var timeout = $timeout(function(){});
$scope.modelChanged = function(){
$timeout.cancel(timeout); //cancel the last timeout
timeout = $timeout(function(){
$scope.pageChanged($scope.sort, $scope.name, $scope.sortDirection);
}, 500);
};
我不熟悉去抖,但它可能会达到同样的效果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)