Adicionar um registro com AlpineJS
atualize a lista de itens com spread operator
saveData() {
if (!this.contato.nome) {
this.required = true
return
}
const addModal = tailwind.Modal.getOrCreateInstance(document.querySelector("#addModal"));
fetch(this.urlPost, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
data: this.contato
}),
})
.then(response => response.json())
.then((data) => {
addModal.hide()
this.contatos = [ ...this.contatos, data.data]
this.contato = {
nome: '',
telefone: '',
email: '',
site: '',
}
})
}
Para deletar um registro com AlpineJS, precisa:
- Abrir um modal de confirmação com os atributos
data-tw-toggle="modal"
data-tw-target="#deleteModal"
- Passar para o modal o nome do item e o id
@click="nome=contato.nome; id=contato.id"
- No modal
<div id="deleteModal">
<span x-text="nome"></span>
<button
type="button"
class="btn btn-danger w-24"
@click="deleteItem(id)"
>
Deletar
</button>
</div>
- E no JS
deleteItem(id) {
const deleteModal = tailwind.Modal.getOrCreateInstance(document.querySelector("#deleteModal"));
fetch(`/api/contato/${id}/delete/`, {
method: "DELETE"
})
.then(response => response.json())
.then(data => {
deleteModal.hide()
this.contatos = this.contatos.filter(contato => contato.id !== id);
})
}