Угловое удаление нескольких вызовов при смене (отладка / таймеры / манипулирование временем?)

У меня есть ситуация, когда я не могу использовать debounce в HTML, как ng-model-option: {debounce:1000}

Но я хочу удалить повторные обратные вызовы для функции doCallback в моей директиве и сделать только 1 вызов в 1 с

HTML: <input ng-change="vm.GetStuff">

угловая директива:

class SuperDirective {
    eventTime: any;
    anotherCallWasMade: boolean;

  static $inject = ['$scope', "$timeout"];
  constructor($scope: angular.IScope, $timeout: ng.ITimeoutService) {
            super();
...
      }



   GetStuff(): void {

          //I've tried something like this but it didn't exactly work             
          if (this.eventTime == undefined) {
                this.eventTime = Date.now();
                this.anotherCallWasMade = true;
            } else {
                var currentTime = Date.now().valueOf();
                var eventTime = this.eventTime.valueOf();
                var sec = (Date.now().valueOf() - this.eventTime.valueOf())/1000;
                if (sec <= 1) {
                //If this is the first attempt after original request then we perform a search once more, if this is another request during the same second we dont do anything..
                    if (this.anotherCallWasMade) {
                        this.anotherCallWasMade = false;
                        this.$timeout(() => {
                            this.eventTime = Date.now();
                            this.get_Items();
                        }, 1000);
                    }
                    return;
                }
                this.anotherCallWasMade = true;
                this.eventTime = Date.now();
            }

                this.$timeout(() => {
                    if (this.doCallback != null) {
                        // I want to call this once in 1s instead of multiple times 
                        this.doCallback ();
                    }
                }, 0);

            }
        }

может быть, есть более простой способ удалить ненужные вызовы this.doCallback()?

0 ответов

Другие вопросы по тегам