Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema com o alert alert-info do bootstrap.

Olá, no curso do JavaScript avançado consegui concluir todas as etapas, mas a única coisa que não está funcionando é a exibição da mensagem: "Negociação adicionada com sucesso", após a inclusão da negociação apertando incluir no formulário.

Ao invés disso, o alert do bootstrap exibe ${model.texto}, como se fosse texto puro. Aí está o código da classe MensagemView.j e da View.js:

MensagemView.js>>

class MensagemView extends View {

  constructor(elemento){
      super(elemento);
  }

  template(model){

      return model.texto ? '<p class="alert alert-info">${model.texto}</p>' : '<p></p>';
  }
}

View.js>>

class View {

    constructor(elemento) {

        this._elemento = elemento;
    }

    template() {

        throw new Error('O método template deve ser implementado');
    }

    update(model) {

        this._elemento.innerHTML = this.template(model);
    }
}

Lembrando que estou usando o Google Chrome Versão 79.0.3945.88 (Versão oficial) 64 bits, para abrir o index.html.O que será que está acontecendo??

1 resposta
solução!

Fala ai Antonio, tudo bem? O problema está no método template da classe MensagemView:

template(model) {
    return model.texto ? '<p class="alert alert-info">${model.texto}</p>' : '<p></p>';
}

Repare que seu retorno é uma string padrão em JavaScript, sendo assim, o JavaScript não sabe que o trecho ${model.texto} trata-se de uma variável.

Para a utilização de template string você precisa trocar as aspas simples por crases, ficando:

template(model) {
    return model.texto ? `<p class="alert alert-info">${model.texto}</p>` : '<p></p>';
}

Espero ter ajudado.

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