我如何使用AngularJS进行lodash去抖?

时间:2014-01-03 10:13:40

标签: angularjs

有人建议我可以使用以下内容:

$wmdInput.on('keyup', _.debounce(function () {
    var rawContent = $wmdInput.val();
    scope.$apply(function () {
        ngModel.$setViewValue(rawContent);
    });
}), 300);

然而,这给出了一条消息:Uncaught TypeError:对象500没有来自jQuery的方法'apply'。

有谁知道如何解决这个问题?

作为一个FYI,还建议我可以使用以下内容:

var promise;
$wmdInput.on('keyup', function () {
    $timeout.cancel(promise);
    promise = $timeout(function() {
        var rawContent = $wmdInput.val();
        ngModel.$setViewValue(rawContent);
    }, 2000);
});

我很感谢AngularJS专家的评论。第二个代码是否与使用_lodash一样有效?我在github上发现了很多帖子,所以我希望很快能看到核心AngularJS中实现的内容。

1 个答案:

答案 0 :(得分:1)

来自@Satpal的(现已删除)答案是正确的:您将超时值(300)作为参数传递给$wmdInput.on,而不是_.debounce

所以试试这个:

$wmdInput.on('keyup', _.debounce(function () {
  var rawContent = $wmdInput.val();
  scope.$apply(function () {
    ngModel.$setViewValue(rawContent);
  });
}, 300));