2
respostas

Tabela não aparece após seguir os passos da aula (aula: Integrando nossa view à página)

Após criar o método update e chamá-lo dentro do constructor do "negociacao-controller", a tabela não aparece no browser. Já chequei todos os arquivos, mas o erro ainda persiste. O próprio console do browser não mostra nada.

minha 'negociacaoes-view':

export class NegociacoesView { private elemento: HTMLElement; //vamos criar um seletor css constructor(seletor: string) { this.elemento = document.getElementById(seletor); }

template (): string {
    return `
    <table class="table table-hover table-bordered">
        <thead>
         <tr>
            <th>Data/th>
            <th>Quantidade/th>
            <th>Valor/th>
         </tr>
        </thead>
            <tbody>
                <tr>
                <td></td>
                <td></td>
                <td></td>
                </tr>
            </tbody>
     </table>
     `;
}

update(): void {
    this.elemento.innerHTML = this.template();
}

}

meu 'negociacao-controller':

import { Negociacao } from "../models/negociacao.js"; import { Negociacoes } from "../models/negociacoes.js"; import { NegociacoesView } from '../views/negociacoes-view.js';

export class negociacaoController { private inputData: HTMLInputElement; private inputQuantidade: HTMLInputElement; private inputValor: HTMLInputElement; private negociacoes: Negociacoes = new Negociacoes(); private negociacoesView = new NegociacoesView('#negociacoesView');

constructor() {
    this.inputData = document.querySelector("#data");
    this.inputQuantidade = document.querySelector("#quantidade");
    this.inputValor = document.querySelector("#valor");
    this.negociacoesView.update();
}

adicionar(): void {
    const negociacao = this.criarNegociacao();
    this.negociacoes.adiciona(negociacao);
    this.limparFormulario();

criarNegociacao(): Negociacao {
    const exp = /-/g;
    const date = new Date(this.inputData.value.replace(exp, ','))
    const quantidade = parseInt(this.inputQuantidade.value);
    const valor = parseFloat(this.inputValor.value);
    return new Negociacao(date, quantidade, valor);
}

limparFormulario(): void {
    this.inputData.value = "";
    this.inputQuantidade.value = "";
    this.inputValor.value = "";
    //colocamos o focus no inputData
    this.inputData.focus();
}

}

2 respostas

envie o código completo para poder analisar o certo.

this.negociacoesView.update(); precisa retorna o negociações this.negociacoesView.update(this.negociacoes); por exemplo.

colocando o this você está dizendo ao retorno dentro das chaves que irá ter o valor da negociação em tela.

um exemplo do meu código, também estou na mesma aula. negociacao-controller

import { Negociacao } from '../models/negociacao.js';
import { Negociacoes } from '../models/negociacoes.js';
import { NegociacoesView } from '../views/negociacoes-views.js';
import { MensagemView } from '../views/mensagem-view.js';

export class NegociacaoController {
    private inputData: HTMLInputElement;
    private inputQuantidade: HTMLInputElement;
    private inputValor: HTMLInputElement;
    private negociacoes = new Negociacoes();
    private negociacoesView = new NegociacoesView('#negociacoesView');
    private mensagemview = new MensagemView('#mensagemView')


constructor() {
    this.inputData = document.querySelector('#data');
    this.inputQuantidade = document.querySelector('#quantidade');
    this.inputValor = document.querySelector('#valor');
    this.negociacoesView.update(this.negociacoes);
        //this.negociacoesView.template();
    }

adiciona(): void {
    const negociacao = this.criaNegociacao();
    this.negociacoes.adiciona(negociacao);
    this.negociacoesView.update(this.negociacoes);
    this.mensagemview.update('Negociação adicionada com sucesso.');
    this.limparFormulario();
    }

    criaNegociacao(): Negociacao {
        const exp = /-/g;
        const date = new Date(this.inputData.value.replace(exp, ','));
        const quantidade = parseInt(this.inputQuantidade.value);
        const valor = parseFloat(this.inputValor.value);
        return new Negociacao(date, quantidade, valor);
    }

    limparFormulario(): void {
        this.inputData.value = '';
        this.inputQuantidade.value = '';
        this.inputValor.value = '';
        this.inputData.focus();
    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software