Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

166
Visualizações
Los parámetros en la plantilla Pug no están disponibles para el evento onclick

Tengo una plantilla de pug test.pug que tiene un botón. Cuando se hace clic, quiero que el botón llame a una función que use parámetros pasados a la plantilla desde el punto final de representación. Aquí está la plantilla:

 doctype html html head title= title link(rel='stylesheet', href='/stylesheets/style.css') script(type="text/javascript"). window.addEventListener('DOMContentLoaded', function(){ document.getElementById('play-button').addEventListener('click', async () => { console.log(testvar); console.log('ready'); }); }, false); body button(type = 'button' id = 'play-button') Click to play

Y aquí está el punto final que representa la plantilla pug:

 const express = require('express'); const router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('test',{ title:'Player', testvar:'testvar' }); }); module.exports = router;

Pero cuando cargo la página y hago clic en el botón, aparece este error:

 Uncaught (in promise) ReferenceError: testvar is not defined at HTMLButtonElement.<anonymous>

El código funciona correctamente si comento console.log(testvar) , por lo que sé que el controlador de eventos onclick se está agregando correctamente. Entonces, aparentemente, el controlador de eventos se agrega antes de que los parámetros se pasen a la plantilla.

¿Cómo puedo hacer que los parámetros sean accesibles para el evento onclick?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Las variables locales pasadas a través del método .render() de Express solo están disponibles para Pug y solo están disponibles mientras se compila Pug en el servidor. No permanecen disponibles para JavaScript del lado del cliente una vez que Pug se ha compilado en HTML y se ha enviado al navegador.

Si desea que estén disponibles en el lado del cliente, debe usar la interpolación Pug para definir la variable dentro de una etiqueta de secuencia de script , junto con su otro javascript del lado del cliente.

Suponiendo que testvar es una cadena, podría abordarlo de esta manera:

 doctype html html head title= title link(rel='stylesheet', href='/stylesheets/style.css') script(type="text/javascript"). const testvar = '#{testvar}'; // interpolate the value from Pug window.addEventListener('DOMContentLoaded', function() { document.getElementById('play-button').addEventListener('click', async () => { console.log(testvar); console.log('ready'); }); }, false); body button(type = 'button' id = 'play-button') Click to play

Si testvar es una matriz o un objeto, deberá usar el método JSON.stringify() para imprimir la matriz o el objeto en la etiqueta del script .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda