2013-05-12 12 views
8

Próbuję przekazać tablicę do .ejs strony, jednak gdy próbuję użyćNodeJs i macierze Ejs podaje do strony

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

I wyprowadzał

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

console.log na plik nodejs działa dobrze, ale kiedy próbuję po stronie klienta konsoli.log, to działa.

Odpowiedz

30

Problem dotyczy raczej <%= data %> niż console.log(). Jeśli sprawdzić wynik po stronie klienta, prawdopodobnie zobaczysz:

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

Po prostu drukuArray, to będzie po prostu .join() the elements, nazywając .toString() na siebie. And:

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

Do wyprowadzenia danych, więc może być spożywany, można użyć JSON.stringify():

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

ta wykorzystuje składni JSON za ich podstawie synax JavaScript w przeglądarce, by na wyjściu wystawiana Array literal of Object literals:

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

Nie mogę uzyskać tego działa poprawnie, jeśli nie używam '<% - JSON.stringify()%>' zamiast '<% ​​= JSON.stringify()%>. – robertklep

+0

@robertklep Dzięki. Zapomniałem o tym. –