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

Erro em NegociacoesView no NegociacaoController

Depois de todas as modificações, apareceu o seguinte erro:

(SystemJS) TypeError: NegociacoesView is not a constructor
        at new NegociacaoController (http://localhost:3000/js/app/controllers/NegociacaoController.js:61:64)
        at execute (http://localhost:3000/js/app/boot.js:12:30)
    Error loading http://localhost:3000/js/app/boot.js

E se a gente clica

[...]
function NegociacaoController() {
    _classCallCheck(this, NegociacaoController);

    var $ = document.querySelector.bind(document);
    this._inputData = $('#data');
    this._inputQuantidade = $('#quantidade');
    this._inputValor = $('#valor');
    this._ordemAtual = '';
// Clicando em (http://localhost:3000/js/app/controllers/NegociacaoController.js:61:64), o erro aponta para a próxima linha
    this._listaNegociacoes = new Bind(new ListaNegociacoes(), new NegociacoesView($('#negociacoesView')), 'adiciona', 'esvazia', 'ordena');

    this._mensagem = new Bind(new Mensagem(), new MensagemView($('#mensagemView')), 'texto');

    this._service = new NegociacaoService();
    this._init();
}
[...]

Clicando em (http://localhost:3000/js/app/boot.js:12:30) vai direto pra onde instancia o negociacaoController. E clicando no último valor do erro, a linha destacada é a função que engloba o código em ES5.

O código em ES2015

//NegociacaoController.js
import {Bind} from '../helpers/Bind';
import {DateHelper} from '../helpers/DateHelper'
import {Mensagem} from '../models/Mensagem';
import {Negociacao} from '../models/Negociacao';
import {ListaNegociacoes} from '../models/ListaNegociacoes';
import {MensagemView} from '../views/MensagemView';
import {NegociacoesView} from '../views/NegociacoesView';
import {NegociacaoService} from '../services/NegociacaoService';

export class NegociacaoController {

    constructor() {

        let $ = document.querySelector.bind(document);
        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');
        this._ordemAtual = '';

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

        this._mensagem = new Bind(
            new Mensagem(),
            new MensagemView($('#mensagemView')),
            'texto');

        this._service = new NegociacaoService();
        this._init();

    }
[...]
}
//NegociacoesView.js
import {View} from './View';
import {DateHelper} from '../helpers/DateHelper'

export class NegocicoesView extends View {

    template(model) {
        return [...];
    }
}
//Bind.js - apenas caso seja necessário
import {ProxyFactory} from '../services/ProxyFactory';

export class Bind {

    constructor(model, view, ...props) {
        let proxy = ProxyFactory.create(model, props, model => view.update(model));
        view.update(model);
        return proxy;
    }

}
3 respostas

Fala ai Henna, tudo bem? Consegue compartilhar o projeto comigo? Pode compartilhar via Github ou Google Drive (zipado).

Assim fica mais fácil eu dar uma olhada com mais calma por aqui.

Fico no aguardo.

Este é o link no drive para o arquivo.

https://drive.google.com/open?id=1QMtNTA0LFi_DyUHeexuDp4gpYnQbOiyO

solução!

Fala ai Hennan, tudo bem? O problema está no nome da sua classe.

Repare sua importação:

import {NegociacoesView} from '../views/NegociacoesView';

Mas sua classe está sendo exportada como:

export class NegocicoesView extends View

Então o importe deveria ser:

import {NegocicoesView} from '../views/NegociacoesView';

Ou, você pode corrigir o nome da classe:

export class NegociacoesView extends View

Espero ter ajudado.