tutorial node jade example español bootstrap node.js ejs

node.js - node - ejs vs jade



Recorrer a través de JSON en EJS (1)

Tengo códigos en EJS a continuación,

<script> var row =<%-JSON.stringify(data)%> console.log(row); </script> <% for(var i=0; i<JSON.stringify(data).length; i++) {%> <tr> <td> <%= JSON.stringify(data)[i].id%> </td> </tr> <% } %>

la salida de la fila es correcta, una matriz de 3 objetos, cada uno con propiedades id, nombre, etc. Puedo manipular la fila para poblar la tabla en JS. Sin embargo, me pregunto si hay una manera de permitir que se haga de la manera anterior.

Cuando ejecuto el código anterior, JSON.stringify (data) .length no es 3, sino la longitud de toda la cadena.

Otra pregunta es cuando intento agregar.

<% alerta (''t''); %> o <% window.alert (''t''); %>, me da error ''no definido'' ...

Ayudas apreciadas.

Saludos martillo


JSON.stringify devuelve una String . Así por ejemplo:

var data = [ { id: 1, name: "bob" }, { id: 2, name: "john" }, { id: 3, name: "jake" }, ]; JSON.stringify(data)

devolverá el equivalente de:

"[{/"id/":1,/"name/":/"bob/"},{/"id/":2,/"name/":/"john/"},{/"id/":3,/"name/":/"jake/"}]"

como un valor de String .

Así que cuando tienes

<% for(var i=0; i<JSON.stringify(data).length; i++) {%>

Lo que termina pareciendo es:

<% for(var i=0; i<"[{/"id/":1,/"name/":/"bob/"},{/"id/":2,/"name/":/"john/"},{/"id/":3,/"name/":/"jake/"}]".length; i++) {%>

que probablemente no es lo que quieres. Lo que probablemente quieras es algo como esto:

<table> <% for(var i=0; i < data.length; i++) { %> <tr> <td><%= data[i].id %></td> <td><%= data[i].name %></td> </tr> <% } %> </table>

Esto generará la siguiente tabla (utilizando los data ejemplo de arriba):

<table> <tr> <td>1</td> <td>bob</td> </tr> <tr> <td>2</td> <td>john</td> </tr> <tr> <td>3</td> <td>jake</td> </tr> </table>