将数据从节点传递到玉?

时间:2012-11-27 09:25:48

标签: javascript node.js pug render

问题是我渲染视图并发送一些数据

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

我知道产品应该是一个数组否则

    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}

不工作,但为什么我需要数组时会得到一个字符串?

我做错了什么?

2 个答案:

答案 0 :(得分: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列表

不是特别优雅,但它解决了这个问题。

答案 1 :(得分:0)

显示逗号分隔字符串的最佳方式 示例数据= 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}