4
respostas

Tabela não aparece na view

Boa dia, não aparece erro no console, no entanto a lista não está sendo exibida.

Alguma poderia me ajudar...?

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeNegociacao-controller.ts

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 = 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();

};

adiciona(): void{
    const negociacao = this.criaNegociacao()
    this.negociacoes.adiciona(negociacao)
    console.log(this.negociacoes.lista())

    // Depois que exibir no console a negociação, limpar o formulário método abaixo.
    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);
}

// Método para limpar ao formulário após enviar. limparFormulario(): void{ this.inputData.value=''; this.inputQuantidade.value=''; this.inputValor.value=''; this.inputData.focus(); // Método focus significa que a escrita volta para a primeira linha (Data).

}

}

negociacoes-view.ts

export class NegociacoesView {

private element: HTMLElement;

constructor(selector: string) {
    this.element = document.querySelector(selector);
}

template(): string{
return `
<table class=" table table-hover table-bourdered table-striped"> 
    <thead>
        <tr>
            <th>DATA</th>
            <th>QUANTIDADE</th>
            <th>VALOR</th>
        </tr>
    </thead>    
    <tbody>

    </tbody>
</table>    

`;

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

}

4 respostas

Boa tarde Clayton de lima,

Tudo bem?

Então, eu estava com esse problema, posso estar falando bobagem, mas eu mudei o caminho do meu <script> que estava sendo chamado no index.html.. COMO ESTAVA = <script type="module" src="js/app.js"></script>

COMO EU COLOQUEI = <script type="module" src="./js/views/app.js"></script>

vamos ver se terei alguma complicação mais para frente, mas por agora, está funcionando.

Tomará que te ajude.

Abraço.

Boa noite

A minha lista também não esta sendo exibida, revisei o código e não acho o erro. Aparentemente esta tudo ok!

Alguém poderia me ajudar?

Obrigado

No meu caso o erro estava no arquivo app.ts, eu não tinha passado o argumento.

Verifique se o seu código está assim:

import { NegociacaoController } from './controllers/negociacao-controller.js';
import { NegociacoesView } from './views/negociacoes-view.js';

const controller = new NegociacaoController();
const form = document.querySelector('.form');
form.addEventListener('submit', event => {
    event.preventDefault();
    controller.adiciona();
});

const negociacoesView = new NegociacoesView('#negociacoesView');
const template = negociacoesView.template();
console.log(template);

Boa noite! Estou com o mesmo problema, a lista não está sendo exibida, já revisei todo o código mas não acho o problema.