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

(SystemJS) NegociacoesView is not a constructor

Oi,

Peguei um probleminha no final do ultimo video da ultima aula. Eu adiciono o eventListener no constructor da minha classe NegociacoesView e no chrome aparece:

Error: (SystemJS) TypeError: NegociacoesView is not a constructor at new NegociacaoController (http://localhost:3000/js/app/controllers/NegociacaoController.js:63:79) at execute (http://localhost:3000/js/app/controllers/NegociacaoController.js:159:36) Error loading http://localhost:3000/js/app/boot.js

O codigo presente em js/app/controllers/NegociacaoController na linha 63 eh (transpilado para es5):

this._listaNegociacoes = new Bind(new ListaNegociacoes(), new NegociacoesView($('#negociacoesview')), 'adiciona', 'esvazia', 'ordena', 'inverte');

Descupa pela acentuacao destruida, rodei a lista de teclados do ubuntu e nao consegui fazer a acentuacao funcionar neste aqui :D

3 respostas
solução!

Boa tarde!

Poste o código de NegociacoesView. Verifique também se os imports estão corretos. Aliás, seria bom postar o código sempre completo e nunca por pedaço, porque todo erro tem um contexto e esses pedacinhos abam mascarando-o.

Oi professor! Desculpa a demora.

Entao, acho que estava faltando chacoalhar meu computador um pouco. Ou chacoalhar a mim mesmo. Provavelmente ambos. Liguei a maquina, rodei o watcher e o servidor, abri o browser e a mensagem de erro foi outra. Correndo atras dos novos erros, vi que tinha importado o negociacaoController apontando um path errado, depois vi que estava chamando o currentInstance sem os parenteses. Destaquei os problemas no fonte, logo abaixo.

Segue meu NegociacoesView.js (em app-es6/views)

import {View} from './View';
import {DateHelper} from '../helpers/DateHelper';
import {currentInstance} from './controllers/NegociacaoController';
//primeiro erro na linha logo acima

export class NegociacoesView extends View{

    constructor(elemento){
        super(elemento);
        elemento.addEventListener('click', function(event){
            if(event.target.nodeName == 'TH'){
                //segundo erro aqui embaixo
currentInstance.ordena(event.target.textContent.toLowerCase());
            }
        });
    }

    template(model){
        return `
        <table class="table table-hover table-bordered">
            <thead>
                <tr>
                    <th>DATA (dd/mm/aaaa)</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.volume}</td>
                        </tr>
                `).join('')}
            </tbody>

            <tfoot>
                <td colspan="3" style="text-align: right; font-weight:bold;">TOTAL</td>
                <td>${model.volumeTotal}</td>
            </tfoot>
        </table>
        `;
    }

}

Obrigado pela atencao, parabens pelos cursos, perdao "pelos vacilo". (=

Pode ficar muito tranquilo, meu aluno. Não foi vacilo, isso acontece no dia a dia do desenvolvedor. Com o tempo vai diminuindo, mas acontece.

Sucesso e bom estudo e obrigado por compartilhar sua resposta conosco!