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;
}
}