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

NegociacaoController is not defined

Estou refazendo o curso para fixar os conhecimentos e fiz umas mudanças, ao invez de importar no html todos os arquivos JS estava usando o export e o import, e ao testar o codigo ele não esta realizando o event.preventDefault(), e atualizando a pagina, fui alterando algumas coisas e quando deixo o codigo html assim

<script type="module" src="js/app/controllers/NegociacaoController.js">
    let controller = new NegociacaoController();
</script>

Ele simplesmente ignora o event.preventDefault(), quando coloco o codigo assim

<script type="module" src="js/app/controllers/NegociacaoController.js"></script>
<script>
    let controller = new NegociacaoController();
</script>

Ele diz q NegociacaoController não foi definido, detalhe, inclui no formulario o onsubmit

<form class="form" onsubmit="controller.adiciona(event)">

A função adiciona esta declarada como

adiciona(event){
        event.preventDefault();
        console.log("funcionou")
}
4 respostas

Bem, fiz as alterações

<form class="form">
...
<button class="btn btn-primary" type="submit" data-botao>Incluir</button>

e fiz um arquivo main

        import { NegociacaoController } from "./js/app/controllers/NegociacaoController.js"
        let controller = new NegociacaoController();
        let botao = document.querySelector("[data-botao]");
        botao.addEventListener('click', event => controller.adiciona(event));

e deu certo, mas agora gostaria de entender porque o <script type="module"> não tem o mesmo resultado que na aula

Fala Rafael, tudo bem?

O que acontece é que, devido o fato de você ter definido o script anterior como type module você só poderá acessar outras partes de código através do importe export, então não é possível fazer a importação nessa tag script, dessa maneira não sendo possível acessar a classe.

Espero ter ajudado, bons estudos :D

Oi Mateus,

Então não é possivel associar o submit do form com o metodo da classe? Pois tive que fazer um querySelector para "ouvir" o click do botão ignorando todas as restrições aplicadas no html

solução!

Caso o script em que a classe esteja, estiver como type module, não é possivel.