2
respostas

Editar parou de funcionar depois de colocar async await

Reassisti a aula algumas vezes e nao entendi o pq ao mudar para o async/await perdi a função editar. Não aparece nada no console para orientar que houve. Alguém poderia ajudar?

Obrigado

import { clienteService} from "../service/cliente-service.js"
//template  para exibir dados

//criando variável para montar a tr
const criaNovalinha = (nome, email,id) =>{
    const linhaCliente = document.createElement('tr')
    const conteudo =`<td class="td" data-td>${nome}</td>
            <td>${email}</td>
            <td>
                <ul class="tabela__botoes-controle">
                    <li><a href="../telas/edita_cliente.html?${id}" class="botao-simples botao-simples--editar">Editar</a></li>
                    <li><button class="botao-simples botao-simples--excluir" type="button">Excluir</button></li>
                </ul>
            </td>`
    linhaCliente.innerHTML = conteudo
    //criando data-attribute
    linhaCliente.dataset.id = id
    return linhaCliente
}
//selecionando local do append
const tabela = document.querySelector('[data-tabela]')

tabela.addEventListener('click', async(evento)=>{
    evento.preventDefault()
   let ehBtnDel = evento.target.className == 'botao-simples botao-simples--excluir'
   //verificando se o local clicado foi o botao
    if(ehBtnDel){
        //procurando o elemento mais próximo da td com o escutador, no caso o escutdor está na td e o proximo é tr
        const linhaCliente = evento.target.closest('[data-id]')
        let id = linhaCliente.dataset.id
        await clienteService.removeCliente(id)
        linhaCliente.remove()
        }

})
const render = async () => {
const novalistaClientes = await clienteService.listaClientes()

novalistaClientes.forEach(elemento => 
    {tabela.appendChild(criaNovalinha(elemento.nome,elemento.email, elemento.id))
    })      
            //faz um loop para criar uma tr para cada elemento dentro do JSON

}

render()
2 respostas

Oi Ricardo, tudo bom?

parece que no seu link ta faltando o parametro ID <a href="../telas/edita_cliente.html?id=${id}" class="botao-simples botao-simples--editar">

espero ter ajudado Abraços

oi Diego,

Seguindo o material da aula esse código fica em outro .js

import { clienteService } from "../service/cliente-service.js"

(async()=>{
    const pegaURL = new URL(window.location)

    const id = pegaURL.searchParams.get('id')

    //percorrendo DOM

    const inputNome = document.querySelector('[data-nome]')
    const inputEmail = document.querySelector('[data-email]')

    const dados = await clienteService.editaCliente(id)
        inputNome.value = dados.nome
        inputEmail.value = dados.email

    const formulario = document.querySelector('[data-form]')

    formulario.addEventListener('submit', async (evento)=> {
        evento.preventDefault()
         await clienteService.atualizaCliente(id, inputNome.value, inputEmail.value)
            window.location.href = "../telas/edicao_concluida.html"
    })

})()