input绑定selectUrl这一变量
<input ng-model="selectUrl" placeholder="测试实时刷新" >
外部定义timeout,当监测的input框内值改变时,首先调起timeout=$timeout(function(){........})
当输入框内继续输入内容,且距离上次值改变不足1200ms时,说明这一次的输入并未结束,此时仍然会watch到selectUrl值变化,执行watch,但此时 timeout为真,因此执行 $timeout.cancel(timeout)取消上次的timeout,并重新设置新的timeout,即刷新倒计时恢复1200ms。
只有当输入框结束输入,并且过去1200ms后,才会执行查询请求
let timeout;
$scope.$watch('selectUrl', function(oldValue,newValue){
if(oldValue === newValue) return;
if(timeout) {
$timeout.cancel(timeout);
}
timeout=$timeout(function() {
//如下为需要执行的功能,如模糊查询请求等。
if($scope.selectUrl === ''){
$scope.currentUrl = $scope.assertUrl + "*";
}else{
$scope.currentUrl = $scope.assertUrl + $scope.selectUrl;
}
$scope.routeJump($scope.currentUrl, $scope.currentPeriod,$scope.chosenUrl);
}, 1200);
});