Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

event is not defined

Olá!

Quando eu faço o uso do event dentro do decorator throttle e vou usar o app, recebo uma mensagem dizendo que "event is not defined". Se removo apenas esta linha, tudo funciona normalmente.

O que pode ser?

export function throttle(milisegundos = 500) {
  return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
    const metodoOriginal = descriptor.value;
    let timer = 0;
    descriptor.value = function (...args: any[]) {
      if (event) event.preventDefault();
      clearTimeout(timer);
      timer = setTimeout(() => metodoOriginal.apply(this, args), milisegundos);
    };
    return descriptor;
  }
}

  @throttle(700)
  adiciona() {
    let data = new Date(this._inputData.val().replace(/-/g, ','));

    if (!this.ehDiaUtil(data)) {
      this._mensagemView.update("Somente negociações em dias úteis são aceitas.");
      return;
    }
    const negociacao = new Negociacao(
      data,
      parseInt(this._inputQuantidade.val()),
      parseInt(this._inputValor.val())
    );

    this._negociacoes.adiciona(negociacao);
    this._negociacoesView.update(this._negociacoes);
    this._mensagemView.update("Negociação adicionada com sucesso!");
  }
1 resposta
solução!

Oi Ivan, tudo bem? Confesso que também não entendi. No entanto, pra mim resolveu quando coloquei o if em seu próprio block.

if(event){
    event.preventDefault();
}       

Me parece algum bug esquisito do compilador.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software