Угловые условные часы для вызова дебагового метода или не работает

У меня есть следующие угловые часы для наблюдения за переменной области действия, и я выполняю следующее. Я использую debounce для связывания запроса с бэкэндом.

  var myWatch = $scope.$watch('myQuery', _.debounce(loadMyData, 1000),true);

Когда myQuery возвращает undefined, мне не нужен этот debounce, а вместо этого мне нужно выполнить внутренний вызов напрямую.

  var myWatch =  $scope.$watch('myQuery', function(oldquery,newquery){
      if(newquery){
        _.debounce(loadMyData(newquery), 2000,true);
      }else{
        loadMyData(newquery);
      }
  },true);

теперь debounce неправильно связывает мой запрос.

1 ответ

Решение

Вам нужно сохранить новую функцию в переменной и вызвать ее в слушателе наблюдения:

var debouncedLoadMyData = _.debounce(loadMyData, 1000, true),
    myWatch = $scope.$watch('myQuery', function (oldquery, newquery) {
        if (newquery) {
            debouncedLoadMyData(newquery);
        } else {
            loadMyData(newquery);
        }
    }, true)
;
Другие вопросы по тегам