jade - Accediendo a la variable EJS en la lógica de Javascript
ejs variables (2)
Podrías inyectar directamente la variable gameState en javascript en la página.
<% if (gameState) { %>
<h2>I have a game state!</h2>
<script>
var clientGameState = <%= gameState %>
</script>
<% } %>
Otra opción podría ser hacer una llamada de AJAX al servidor una vez que la página ya se haya cargado, devolver el JSON de gameState y establecer clientGameState en la respuesta de JSON.
También te puede interesar esto: ¿Cómo puedo compartir código entre Node.js y el navegador?
Estoy trabajando en una aplicación NodeJS (es un juego). En este caso, tengo un código configurado de tal manera que cuando una persona visita el índice y elige una habitación, se le redirige a la habitación adecuada.
Ahora mismo se está haciendo así, con Express v2.5.8:
server.get("/room/:name/:roomId, function (req, res) {
game = ~databaseLookup~
res.render("board", { gameState : game.gameState });
}
A través de board.ejs puedo acceder a la manera de gameState con un código como este:
<% if (gameState) { %>
<h2>I have a game state!</h2>
<% } %>
¿Hay alguna forma de importar esto en mi lógica de JavaScript? Quiero poder hacer algo como var gs = ~ import ejs gameState ~
y luego ser capaz de hacer lo que quiera con él: acceder a sus variables, imprimirlo en la consola para su verificación. Eventualmente, lo que quiero hacer con este estado del juego es mostrar el tablero correctamente, y para eso tendré que hacer cosas como acceder a las posiciones de las piezas y luego mostrarlas correctamente en la pantalla.
¡Gracias!
Siento que la lógica de abajo es mejor y funcionó para mí.
Supongamos que la variable pasada a la página de ejs es uid
, puede tener el contenido de la etiqueta div
o una etiqueta h
con la variable pasada. Puede acceder al contenido de la etiqueta div o h
en el script y asignarlo a una variable.
Ejemplo de código a continuación: (en ejs)
<script type="text/javascript">
$(document).ready(function() {
var x = $("#uid").html();
alert(x); // now JS variable ''x'' has the uid that''s passed from the node backend.
});
</script>
<h2 style="display:none;" id="uid"><%=uid %></h2>