2
respostas

livros/form: valores padroes com UNDEFINED

Por alguma razao, quando acesso http://localhost:3000/livros/form, em vez dos campos estarem com seus valores vazios e aquele texto Placeholder no fundo, eles estao preenchidos com UIDEFINED. Poderiam me ajudar a entender o porque? Segue o código da rota e do form.marko.

  // GET busca o html/marko do formulário
  app.get('/livros/form', function (req, resp) {

    resp.marko(require('../views/livros/form/form.marko'), { livro: {} });
  })
<html>
    <body>
        <h1>Cadastro de livros</h1>

        <!-- action mostra para onde os dados serão enviados
        metodo fala qual tipo de método está sendo utilizado (CURD) -->
        <form action="/livros" method="post">

            <!-- <input type="hidden" id="id" name="id" /> -->
            <input type="hidden" id="id" name="id" value="${data.livro.id}" />

            <div>
                <label for="titulo">Titulo:</label>
                <input type="text" id="título" name="titulo" placeholder="titulo" value=`${data.livro.titulo}` />
            </div>
            <div>
                <label for="preco">Preço:</label>
                <input type="text" id="preco" name="preco" placeholder="000.00" value=`${data.livro.preco}` />
            </div>
            <div>
                <label for="descricao">Descrição:</label>
                <textarea cols="20" rows="10"  id="descricao" name="descricao" placeholder="descrição" >${data.livro.descricao}</textarea>
            </div>

            <input type="submit" value="Salvar" />
        </form>
    </body>
</html>
2 respostas

Acabei de postar e descobri onde ocasionou o erro, mas não entendi o porque.

Recebi o aviso abaixo. Então troquei as aspas duplas do value pelo til craseado, conforme documentação do marko. Quando deixo com aspas duplas, não ocorre o erro do Placeholder comentado, mas recebo o aviso comentado. Quando troco, ocorre o erro do Placeholder e o aviso some.

Alguém conseguiria iluminar-me?

MIGRATION Non standard template literals have been deprecated, please use javascript template literals instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-nonstandard-template-literals

Oi, Vinicius, tudo bem?

O Marko está migrando a forma como declara variáveis, para template literals, que é a forma mais moderna, referente ao ECMASCRIPT 6 e esse versão do Marko é 5, estamos usando aqui no curso a 4, que ainda é a forma antiga.