2013-05-12 15 views
8

Sto cercando di passare un array a una pagina .ejs, tuttavia quando provo utilizzareNodeJs e array Ejs pass per pagina

var test ="<%= data %>"; 
console.log(test); 

ho l'uscita

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object 

console.log su il file nodejs funziona bene, ma è quando cerco console.log lato client che incasina.

risposta

30

Il problema è probabile con <%= data %>, anziché console.log(). Se si controlla il risultato sul lato client, probabilmente vedrete:

var test ="[object Object],[object Object],[object Object],..."; 

Quando semplicemente stampa un Array, questo sarà solo .join() the elements, chiamando .toString() su ciascuno. And:

new Object().toString() === "[object Object]" 

Per l'uscita dei dati in modo che possa essere consumato, è possibile utilizzare JSON.stringify():

var test = <%- JSON.stringify(data) %>; 

Questo sfrutta la sintassi di JSON essendo basata su SYNAX di JavaScript per emettere un Array literal of Object literals:

var test = [{"prop":"value"},...]; 
+8

Non riesco a farlo funzionare correttamente se non uso '<% - JSON.stringify()%>' invece di '<% = JSON.stringify()%>'. – robertklep

+0

@robertklep Grazie. Dimenticato di questo. –