Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Destruir uma classe JS

Srs, boa tarde.

Eu estou com a seguinte dificuldade. Eu tenho um link que aponta para o arquivo que faz a chamada para classe através da tag script acima.

Toda vez que que o arquivo da classe é chamado o erro em questão é apresentado: "Uncaught SyntaxError: Identifier 'Responsaveis' has already been declared."

class Responsaveis{

  preencheCampos(){
    this.emptyElement("#D001_AreasID");  
    this.preencheAreaNoSelect("#D001_AreasID");
    this.preencheSubAreaNoSelect("#D001_SubareasID");
    this.preencheMotivoNoSelect('#D001_MotivosAreasID');
  }
<script src="../../assets/js/pages/request/responsaveis.js"></script>

Eu estou atualizado a pagina antes da chamada da classe e isso "resolve", mas penso que não é elegante. É possível destruir uma classe tipo um garbet colecto?

<script src="../../assets/js/pages/request/responsaveis.js"></script>
<script>     

  $('#resp').click( () => {
    setTimeout(function(){
     window.location.reload();
    }, 1000)
  });  

  let responsaveis = new Responsaveis();
    responsaveis.findAll();
    responsaveis.delete();
    responsaveis.update();   

</script>
5 respostas

Fala ai Leandro, tudo bem? Esse erro parece ser por conta de você estar tentando importar duas vezes uma classe chamada Responsaveis.

Verifique seus arquivos .js, a declaração da classe só pode ser feita uma vez.

Espero ter ajudado.

Oi Matheus, tudo certo e com você?

Exatamente isso. Eu tenho um link que aponta para uma pagina html que por sua vez faz a chamada para o arquivo js onde consta a classe. Esse link está em um menu. Se o usuário navega entre os menus "vai e volta" e como se ele estivesse chamado a classe novamente. Eu pensei em antes de chamar, destruir a instância.

solução!

Fala Leandro, acho que talvez o problema esteja no fluxo, o ideal é que o arquivo seja carregado uma unica vez por pagina.

No caso, acho que quem deveria importar o arquivo .js seria o HTML através do script e não via .js ou clique do menu.

Espero ter ajudado.

Oi Matheus. Era isso mesmo. Muito obrigado.

Magina Leandro, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.