我如何使用AngularJS的lodash debounce?
有人建议我可以使用以下方法:我如何使用AngularJS的lodash debounce?,angularjs,Angularjs,有人建议我可以使用以下方法: $wmdInput.on('keyup', _.debounce(function () { var rawContent = $wmdInput.val(); scope.$apply(function () { ngModel.$setViewValue(rawContent); }); }), 300); var promise; $wmdInput.on('keyup', function () { $tim
$wmdInput.on('keyup', _.debounce(function () {
var rawContent = $wmdInput.val();
scope.$apply(function () {
ngModel.$setViewValue(rawContent);
});
}), 300);
var promise;
$wmdInput.on('keyup', function () {
$timeout.cancel(promise);
promise = $timeout(function() {
var rawContent = $wmdInput.val();
ngModel.$setViewValue(rawContent);
}, 2000);
});
但是,这会给出一条消息:uncaughttypeerror:object500没有来自jQuery的方法“apply”
有人知道我该怎么解决这个问题吗
作为参考,还建议我可以使用以下内容:
$wmdInput.on('keyup', _.debounce(function () {
var rawContent = $wmdInput.val();
scope.$apply(function () {
ngModel.$setViewValue(rawContent);
});
}), 300);
var promise;
$wmdInput.on('keyup', function () {
$timeout.cancel(promise);
promise = $timeout(function() {
var rawContent = $wmdInput.val();
ngModel.$setViewValue(rawContent);
}, 2000);
});
我非常感谢安圭拉的专家们的评论。第二个代码会像使用lodash一样工作吗?我注意到github上有很多帖子,所以我希望很快看到核心AngularJS中实现的东西 来自@Satpal的(现在已删除)答案是正确的:您正在将超时值(300
)作为参数传递给$wmdInput.on
,而不是\u.debounce
所以试试这个:
$wmdInput.on('keyup', _.debounce(function () {
var rawContent = $wmdInput.val();
scope.$apply(function () {
ngModel.$setViewValue(rawContent);
});
}, 300));
只要看一下第二个片段,它看起来就应该工作了。然而,使用debounce更能表达您想要实现的目标,例如$wmdInput.on('keyup',u.debounce(processInput,300))比使用承诺变量和取消并再次设置超时更清晰。我被Samantha J的评论吓了一跳。我不想像昨天那样沉溺于冗长的谈话。这样就删除了我知道是正确的答案。无论如何谢谢你的讣告