debounce不会在$ scope范围内触发。$ watch

时间:2015-06-04 17:24:53

标签: javascript angularjs underscore.js

我正在尝试在我的UI中更新模型变量时运行一个函数,但我也试图通过debounce调节函数的执行频率,因为所请求的函数会触发一个AJAX调用。然而,下面的去抖功能似乎根本没有发射。

我最初编写了自己的去抖服务并且使用了下划线去抖方法来测试我写的是否不正确但是事实证明Angular不喜欢下面的东西......

在HTML中使用Angular的ng-model-option debounce方法不是一种选择。

$scope.$watch('filters.monthlyCost', function () {

    _.debounce(function () {
        console.log('lol');
    }, 1000);

});

没有控制台错误,console.log('lol')永远不会发生。

注意:$ watch 执行

2 个答案:

答案 0 :(得分:1)

由于debounce返回一个函数((Function): Returns the new debounced function.),需要执行返回值debounce

,例如:

_.debounce(function () {
        console.log('lol');
    }, 1000)();

你可以这样做:

$scope.$watch('monthlyCost', _.debounce(function() {
        console.log('lol');
    }, 1000));

答案 1 :(得分:0)

我从_.debounce(未测试)的文档中站起来

$scope.$watch('filters.monthlyCost', function () {

    var logConsole = _.debounce(function () {
        console.log('lol');
        }, 1000);
    logConsole();

});

使用您的代码,您只需注册去抖功能,但不会执行。