Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Meu conteúdo volume está vindo escrito 'ubdefined'

Não sei qual foi o problema que fez ter esse resultado na tabela.

Meu Negociacao.js acho que está correto, ou faltou mais algo sobre a variavel volume?

clases Negociacao {

    constructor(data, quantidade, valor) {


        this._data = new Date(data.getTime());
        this._quantidade = quantidade;
        this._valor = valor;
        Object.freeze(this);
    }

    get volume() {

        return this._quantidade * this._valor;
    }

    get data() {
        return new Date(this._data.getTime());
    }

    get quantidade() {
        return this._quantidade;
    }

    get valor() {
        return this._valor;
    }
}
3 respostas

Bom dia.

Poste o código do controller e da view.

NegociacaoController.js



class NegociacaoController{

    constructor(){
        let $ = document.querySelector.bind(document);

        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');
        this._listaNegociacoes = new ListaNegociacoes();
        this._negociacoesView = new NegociacoesView($('#negociacoesView'));

        this._negociacoesView.update(this._listaNegociacoes);
    }

    adiciona(event) {

        event.preventDefault();

        //adicionar a negociação a uma lista
        this._listaNegociacoes.adiciona(this._criaNegociacao());
        this._negociacoesView.update(this._listaNegociacoes);
        this._limpaFormulario();

    }

    _criaNegociacao(){
        return new Negociacao(
            DateHelper.textoParaData(this._inputData.value),
            this._inputQuantidade.value,
            this._inputValor.value);
    }

    _limpaFormulario(){
        this._inputData.value='';
        this._inputQuantidade.value='1';
        this._inputValor.value= 0.0;

        this._inputData.focus();
    }
}

NegociacoesView.js




class NegociacoesView{

    constructor(elemento){
        this._elemento = elemento;
    }
    _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>
                        ${model.negociacoes.map(n =>
                             `
                                <tr>
                                    <td>${DateHelper.dataParaTexto(n.data)}</td>
                                    <td>${n.quantidade}</td>
                                    <td>${n.valor}</td>
                                    <td>${n.vlume}</td>
                                </tr>
                            `    
                        ).join('')}
                    </tbody>

                    <tfoot>
                    </tfoot>
                </table>`;
    }
    update(model){
        this._elemento.innerHTML = this._template(model);
    }




    /*

    */
}
solução!

Há um erro de digitação no seu template, veja:

<td>${n.vlume}</td>

Só corrigir. Sucesso e bom estudo.