Boa noite,estou refazendo o projeto com uma modificação ao invés de data(date ) tenho um nome (text/String),porém ao gerar a tabela só o primeiro elemento é montado corretamente que é o nome,sendo assim as demais montadas com um dado incoerente [object HTMLInputElement]
Código que possivelmente está com erro,eu analisei e não encontrei o "danado"
View
class View {
constructor(elemento) {
this._elemento = elemento;
}
template() {
throw new Error("O metodo template deve ser implementado");
}
update(model) {
this._elemento.innerHTML = this.template(model);
}
}
ProdutoView
class ProdutoView extends View {
constructor(elemento) {
super(elemento);
}
template(model) {
return `
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>NOME</th>
<th>QUANTIDADE</th>
<th>VALOR</th>
</tr>
</thead>
<tbody>
${model.produtos.map(p => `
<tr>
<td>${p.nome}</td>
<td>${p.quantidade}</td>
<td>${p.valor}</td>
</tr>
`)}
</tbody>
<tfoot>
</tfoot>
</table>
`;
}
}
produtoController
class ProdutoController {
constructor() {
// VALORES EXTRAIDOS DOS FORMULARIOS
let $ = document.querySelector.bind(document);
this._inputNome = $('#nome');
this._inputQuantidade = $('#quantidade');
this._inputValor = $('#valor');
//INSTANCIAR A LISTA
this._listaProdutos = new ListaProdutos();
//INSTANCIAR A VIEWS
this._produtoView = new ProdutoView($('#produtoView'));
this._produtoView.update(this._listaProdutos);
}
//EVENTOS
adicionar(event) {
event.preventDefault();
this._listaProdutos.adiciona(this._criaProduto());
this._produtoView.update(this._listaProdutos);
this._limparFormulario();
}
_criaProduto() {
return new Produto(this._inputNome.value, this._inputQuantidade.value, this._inputValor.value);
}
_limparFormulario() {
this._inputNome.value = '';
this._inputQuantidade.value = 1;
this._inputValor.value = 0;
this._inputNome.focus();
}
}
IMPRESSÃO COM ERRO
NOME QUANTIDADE VALOR talco [object HTMLInputElement] [object HTMLInputElement]