Oi pessoal, tudo bem? Utilizei uma solução um pouco diferente da do instrutor Flávio, gostaria de saber se ela também é válida/usual?
Minha solução Tenho a seguinte classe (view):
class NegociacoesView {
constructor(elemento) {
this._elemento = elemento;
}
_template(modelo) {
let template = '';
modelo.negociacoes.forEach(n => {
template +=
`<tr>
<td>${DataHelper.dataParaTexto(n.data)}</td>
<td>${n.quantidade}</td>
<td>${n.valor}</td>
<td>${n.volume}</td>
</tr>`;
});
return template;
}
atualiza(modelo) {
this._elemento.innerHTML = this._template(modelo);
}
}
e a tabela no index.html:
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>DATA</th>
<th>QUANTIDADE</th>
<th>VALOR</th>
<th>VOLUME</th>
</tr>
</thead>
<tbody id="negociacoes-view">
</tbody>
<tfoot>
</tfoot>
</table>
Solução do instrutor Flávio no curso classe (view):
class NegociacoesView {
constructor(elemento) {
this._elemento = elemento;
}
_template(modelo) {
return `
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>DATA</th>
<th>QUANTIDADE</th>
<th>VALOR</th>
<th>VOLUME</th>
</tr>
</thead>
<tbody>
${modelo.negociacoes.map(n => {
return `
<tr>
<td>${DataHelper.dataParaTexto(n.data)}</td>
<td>${n.quantidade}</td>
<td>${n.valor}</td>
<td>${n.volume}</td>
</tr>
`
}).join('')}
</tbody>
<tfoot>
</tfoot>
</table>`
}
atualiza(modelo) {
this._elemento.innerHTML = this._template(modelo);
}
}
Div no index.html:
<div id="negociacoes-view"></div>