2012-11-27 90 views
3

問題是我渲染視圖,併發送一些數據從節點傳遞數據到玉器?

console.log(products); // shows an array 
res.render('seller/sell',{'shop_id':req.user.shop_id ,'products':products}); 

,我保存的數據像這樣的玉

input(id='shop_id',type='hidden',name='shop_id',value='#{shop_id}') 
input(id='pd',type='hidden',name='pd',value='#{products}') 

if(products !='') 
    each val , key in products 
     a(href!='home/sell/edit?id=#{val.id} ',class='product') 
      img(class='product_thum',src!='#{ val.product_thum}',alt!='#{ val.product_name}',title!='#{ val.product_name}') 
      p.product_name #{ val.product_name} 

,然後我試圖讓產品

var d = $('#pd').val(); 
console.log(typeof d); //shows string 

我知道產品shuld否則

if(products !='') 
    each val , key in products 
     a(href!='home/sell/edit?id=#{val.id} ',class='product') 
      img(class='product_thum',src!='#{ val.product_thum}',alt!='#{ val.product_name}',title!='#{ val.product_name}') 
      p.product_name #{ val.product_name} 

不會工作,但爲什麼我需要一個字符串時,我需要的數組?

我做錯了什麼?

+0

你在哪裏試圖「獲得」產品。 Jade只是一個模板語言,可以編譯成HTML ... – Alex

+0

你的字符串是怎樣的?你可以做一些像'var array = string.split(',');' – zemirco

+0

你的數組產品是什麼樣的? – Alex

回答

5

你不能「儲存」在一個隱藏的輸入字段的數組,但你可以做的是存儲產品ID的列表,像這樣:

var productIds = products.map(function(product){return product.id}).toString(); 

res.render('seller/sell', 
    {'shop_id':req.user.shop_id ,'products':products, productIds: productIds}); 

然後,在你的玉觀點:

input(id='shop_id',type='hidden',name='shop_id',value='#{shop_id}') 
input(id='pd',type='hidden',name='pd',value='#{productIds}') 

if(products !='') 
    each val , key in products 
     a(href!='home/sell/edit?id=#{val.id} ',class='product') 
      img(class='product_thum',src!='#{ val.product_thum}',alt!='#{ val.product_name}',title!='#{ val.product_name}') 
      p.product_name #{ val.product_name} 

pd的值現在將是一個逗號分隔的產品ID

不是特別優雅的名單,但是它解決了問題。

+0

您的解決方案shuld工作,但是如果我需要產品 – paynestrike

+0

中的所有數據,那麼又有什麼方法將數據從服務器直接傳遞到客戶端js – paynestrike

+0

我不確定你想要做什麼......你可以像你已經擁有的'模型'一樣傳遞你的數據 - res.render('賣家/賣家', {'shop_id':req。 user.shop_id,'products':products}) - 我不確定你還需要什麼? – Alex

0

顯示逗號分隔字符串的最佳方式 示例data = abc,pqr,lmn;

below code in js file 
test = data.toString().split('","); 
res.render("show.jade",{list: test}); 
display the code in jade as 
table 
tbody 
    each item in list 
    tr 
     td #{item}