有没有人有任何指针可以让我以角度去除按键事件?我无法让它去辩护。我肯定知道,因为我使用$ log.debug打印出按下的键,并且它发出的次数不是去抖动率。
我已经设置了这样:
<div ng-keypress="doSomething"></div>
并且在我的控制器中(并非我在此实例中包含了使用其debounce方法的underscore.js):
...
$scope.doSomething = function(event, keyEvent) {
var keypressed = String.fromCharCode(keyEvent.which).toUpperCase();
_.debounce(handleKeyPress(keypressed), 500);
}
function handleKeyPress(keypressed) {
//do something with the keypress
}
提前感谢您的帮助。
答案 0 :(得分:1)
请尝试以下代码:
$scope.doSomething = _.debounce(function(event, keyEvent) {
$scope.$apply(function() {
// Do something here
});
}, 500);
正如@Enzey所说,_.debounce()
会退回&#34;去抖动&#34;需要在某处调用的函数才能产生任何效果。您需要调用$apply()
才能触发摘要周期。否则,在去抖动功能中对模型所做的任何更改都不会更新视图。
<强>更新强>
事实证明,OP真正想要的是一个限制功能。以下是使用_.throttle()
的另一个代码段:
$scope.doSomething = _.throttle(function($event) {
if ($scope.$$phase) return; // Prevents 'digest already in progress' errors
$scope.$apply(function() {
// Do something here
});
}, 100);