Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre colocar os dados no html usando o map e join

Então, depois do professor usar o map nas negociacoes e retornar tudo em template string , ele usa o join() para transformar tudo em string, já que o innerHTML só trabalha com string. ( me refiro à aula Construindo um template dinâmico com a função map )

A questão é, aqui no meu projeto funciona mesmo sem o join() no fim, porém, quando adiciono mais de uma negociacao, uma vírgula aparece em cima da tabela ( inclusive essa mesma vírgula aparece mesmo se eu apenas der um log de n). Vale dizer que se eu uso o join(), essa vírgula desaparece. Porque isso acontece?

Eis meu código :

_template(model){

        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 class="table-body">
                ${model.negociacoes.map(n =>{
                    console.log(n);
                })}
            </tbody>

            <tfoot></tfoot>
        </table>
        `
    }

Eis meu código retornando os valores de n :

_template(model){

        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 class="table-body">
                ${model.negociacoes.map(n =>{
                    return `
                        <tr>
                            <td>${DateHelper.dateToText(n.data)}</td>
                            <td>${n.quantidade}</td>
                            <td>${n.valor}</td>
                            <td>${n.volume}</td>
                        </tr>
                    `
                })}
            </tbody>

            <tfoot></tfoot>
        </table>
        `
    }
1 resposta
solução!

Fala ai Tilucast, tudo bem? Vamos lá:

A questão é, aqui no meu projeto funciona mesmo sem o join() no fim, porém, quando adiciono mais de uma negociacao, uma vírgula aparece em cima da tabela ( inclusive essa mesma vírgula aparece mesmo se eu apenas der um log de n). Vale dizer que se eu uso o join(), essa vírgula desaparece. Porque isso acontece?

Isso acontece porque como você não está fazendo o join a template string vai chamar a função toString do seu array e por padrão o toString de array vai separar cada item do mesmo por ,.

Já quando você usa o join, a template string não precisa converter seu array para string, porque o mesmo já é uma string.

Espero ter ajudado.