作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一些关于他们的 ng-models 的输入
<input type="text" ng-model="vm.man.name">
<input type="text" ng-model="vm.man.surName">
在我的 Controller 中,我有对象 vm.man={};
。 我想做以下事情:我想把 $watch 放在我的 vm.man
上,所以如果我按 <input>
内的某个键,它应该等待 3 秒,然后向服务器发送响应。但是,如果我按下某个键,并在 3 秒内按下另一个键,它应该等待 3 秒,然后响应服务器。这是我已经完成的操作:
$scope.$watch(()=>vm.man, function (newVal, oldVal) {
if(angular.isUndefined(newVal)) {
return console.log("newVal is Undefined")
}else{
vm.timer1= $timeout(function () {
vm.someFunctionThatRespondsToServer();
}, 3000);
}
}, true);
我现在遇到的问题是,它会在每次按键时产生响应。例如我按a
在我的input
它响应 a,然后我按 b
它响应ab
等等。我想要得到这样的东西:我按 a
如果没有其他按键,它会等待 3 秒,它会响应,或者我按了 a
然后 2 秒后,假设我按了 b
它等待 3 秒然后响应 ab
如果 3 秒内没有其他按键按下。提前致谢。
最佳答案
在 Angular 1/2 中,您可以使用 Lodash debounce
中的函数。这是链接和示例:https://lodash.com/docs/4.17.4#debounce
在 Angular 2 RC5 及更高版本中,您可以使用 debounceTime
。更多详情请点击此处 Angular and debounce
关于javascript - 每次按键后终止 $timeout 并重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46532186/
我是一名优秀的程序员,十分优秀!