我正在尝试使用一些动态内容渲染玉石。我正在读玉器的json。 我的json看起来像这样
{ data1: 'data1',
data2: 'data2',
data3:
[ { name: 'ABC',
address: 'India'
},
{ name: 'DEF',
address: 'Australia'
}]}
我正在尝试渲染玉石并使用上面json的数据 我的玉看起来像
var data1 = #{data1};
var data2 = #{data2};
var size = #{data3.length};
for data in #{data3}
var name = data.name;
var address = data.address;
我能够正确地提取上面提到的前3行中的数据。但是当我尝试从循环中获取数据时,我得到了#34; Uncaught SyntaXError,Unexpected Identifier"调试时出错。 如果我把一条线放在for循环之外,它可以正常工作。实施例
var name = #{data3[0].name};
正确呈现。但我需要遍历一个循环并在那里获取数据。有人可以帮忙。 感谢
使用更多信息进行更新 1.我在运行节点服务器的地方创建了一个json -
var json_string = "{"data1":"data1","data2":"data2","data3":[{"name":"ABC","address":"India"},{"name":"DEF","address":"Australia"}]};";
var json_data = JSON.parse(json_string);
console.log(json_data);
res.render('sample_example', json_data);
在我的sample_example.jade中,我在脚本
中有以下代码段 var data1 = #{data1};
var data2 = #{data2};
var size = #{data3.length};
for data in #{data3}
var name = data.name;
var address = data.address;
如前所述,我能够正确地将#{data1},#{data2},#{data3.length}提取到变量中。但它在for循环中打破了。实际上,我能够从for循环外部提取#{data3 [0] .name}。但是在for looop中它给出了规定的错误。
答案 0 :(得分:1)
现在就是这样做的。
在服务器端,您必须JSON.stringify
对象数组。
var json_data = JSON.parse(json_string);
// Convert back to json only the property data3
json_data.data3 = JSON.stringify(json_data.data3);
res.render('simple', json_data);
或者更好的是不解析JSON只是按照它的方式进行:
// var json_data = JSON.parse(json_string);
res.render('simple', {
json_data: json_string
});
在玉器模板中(如果你遵循更好的方法):
script(type='text/javascript').
var json_data = !{json_data};
var data1 = json_data.data1;
var data2 = json_data.data2;
var data3 = json_data.data3;
var size = data3.length;
data3.forEach(function(data) {
var name = data.name;
var address = data.address;
console.log(name, address);
});
您还需要更改循环结构。 for..in
用于迭代对象而不是对象数组。
答案 1 :(得分:0)
这对我有用;
- var cdata = {"data1":"data1","data2":"data2","data3":[{"name":"ABC","address":"India"},{"name":"DEF","address":"Australia"}]};
each data in cdata.data3
- var name = data.name;
- var address = data.address;
p Name: #{name}
p Address: #{address}
如果更新上面显示的代码不起作用,您可以共享实际的玉文件内容吗?还有什么版本的玉和快递?