2012-10-18 78 views
4

我想通過從mongodb的到客戶對象的數組...如何將對象數組傳遞給玉模板?

這是對象

var objeto_img= 
          { 
           name:'name of the file', 
           image:'image.jpg url', 
           title:'title of the image', 
           caption:'descripcion of the image', 
           link:"#", 
          }; 
在一些簡檔的許多圖像

所以是對象的這樣

陣列
[var objeto_img= 
          { 
           name:'name of the file', 
           image:'image.jpg url', 
           title:'title of the image', 
           caption:'descripcion of the image', 
           link:"#", 
          },var objeto_img= 
          { 
           name:'name of the file', 
           image:'image.jpg url', 
           title:'title of the image', 
           caption:'descripcion of the image', 
           link:"#", 
          },var objeto_img= 
          { 
           name:'name of the file', 
           image:'image.jpg url', 
           title:'title of the image', 
           caption:'descripcion of the image', 
           link:"#", 
          };] 

這是服務器代碼

res.render('index/perfil_publicacion_contenido', 
    { 
     datos:datosRecibidos 
    }) 

datosRecibidos是MongoDB的

和IM試圖把一個變量裏面玉

input(type='hidden',id='imagenes',value=datos.img) 

對象的數組,但是當我試圖讓物體

var fotos=$('#imagenes1').val(); 
      for(foto in fotos) 
      { 
       console.log(fotos[foto].image) 
       console.log(fotos[foto].name) 
       console.log(fotos[foto].caption) 
       console.log(fotos[foto].title) 
      } 

控制檯日誌打印未定義

這是爲什麼?我怎樣才能從客戶端正確地得到數據庫的信息? tnx全部

+2

你的問題還不夠清楚。你想達到什麼目的? – Max

+0

我想把對象數組隱藏在輸入中隱藏「imagenes」 – andrescabana86

回答

8

如果我理解正確,您想將對象數組序列化爲輸入的value。嘗試:

- var jsonString = JSON.stringify(datos) 
input(type='hidden',id='imagenes',value=jsonString) 

第一行應打開對象的數組然後可以被放置到輸入的值的字符串。

然後,當您讀取值時,您將不得不解析JSON。

var fotos = $.parseJSON($('#imagenes1').val()); 

我假設你的$使用意味着你正在使用jQuery。

UPDATE:說明

如果你想要一個Object,它是在內存中的服務器可用給Javascript在瀏覽器中運行的,你要「寫」該對象到頁面上。該過程被正式稱爲序列化,並且使用Javascript的方法是JSON.stringify。一旦在輸入的value的頁面上,它只是一個字符串。頁面上的Javascript必須將該String轉換爲Object(或者在這種情況下爲對象Array)。這就是JSON.parse的用武之地。因爲舊版瀏覽器沒有JSON.parse,所以應該使用像jQuery.parseJSON這樣的polyfill來確保舊版瀏覽器能夠將字符串轉換爲Javascript對象。順便說一下,如果您不需要hiddeninput中的數據,但您認爲這是最好的方式,那麼讓我以另一種方式提出建議。如果您的目標是讓var fotos包含來自服務器的值datos,則可以直接在頁面上的<script>標記中執行此操作。以下是如何做到這一點在玉:

script 
    var fotos = #{JSON.stringify(datos)}; 

退房this question約傳遞對象到頁面上。

+0

嗯所以我必須再次stringify數組和parseJSON獲取對象...謝謝你這個工作對我來說!但如果你可以解釋爲什麼我apreciate,因爲我不明白爲什麼我必須stringify和恢復過程與parseJSON ... – andrescabana86

+1

我更新瞭解釋的答案。 – Max