angularjs – 在$scope上执行延迟$watch
发布时间:2020-12-17 08:07:46 所属栏目:安全 来源:网络整理
导读:我想知道是否有可能在$范围上实现轻微的延迟。我有以下内容查询服务器,所以我想在查询服务器之前评估查询,稍微延迟一点。我注意到,如果你快速键入,它会变得困惑,不会发送正确的信息: $scope.$watch("query",function () { $scope.loading = true; retu
我想知道是否有可能在$范围上实现轻微的延迟。我有以下内容查询服务器,所以我想在查询服务器之前评估查询,稍微延迟一点。我注意到,如果你快速键入,它会变得困惑,不会发送正确的信息:
$scope.$watch("query",function () { $scope.loading = true; returnFactory.query($scope.query).then(function (returns) { $scope.returns = returns; $scope.loading = false; }); });
通常我会说这个延迟使用angular的$ timeout,但你不能清除这个超时。
//编辑:你可以 设置一个超时并清除它,如果这个观察者得到足够快的触发。 喜欢这个: var timeoutCode; var delayInMs = 2000; $scope.$watch("query",function(query) { clearTimeout(timeoutCode); //does nothing,if timeout alrdy done timeoutCode = setTimeout(function(){ //Set timeout $scope.loading = true; returnFactory.query(query).then(function(returns) { $scope.returns = returns; $scope.loading = false; }); },delayInMs); }); http://jsfiddle.net/4FuyY/ 更新感谢stewie var timeoutPromise; var delayInMs = 2000; $scope.$watch("query",function(query) { $timeout.cancel(timeoutPromise); //does nothing,if timeout alrdy done timeoutPromise = $timeout(function(){ //Set timeout $scope.loading = true; returnFactory.query(query).then(function (returns) { $scope.returns = returns; $scope.loading = false; }); },delayInMs); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |