我如何使用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的评论吓了一跳。我不想像昨天那样沉溺于冗长的谈话。这样就删除了我知道是正确的答案。无论如何谢谢你的讣告