我将一些JSON数据传递给Jade模板,但似乎无法将JSON数据打印到我的Jade模板。这是存储并传递给Jade模板的JSON示例:
{ name: 'Team 1',
_id: 5134d71192cf972226000003,
__v: 0,
key: 1362417425623 }
它传递给Jade模板,如下所示:
res.render('tournamentDetails', { 'tournamentData' : tournamentData, seedsSerialized : JSON.stringify(tournamentData.teams) } );
Jade模板的格式为:
script(type='text/javascript')
var seeds = [#{tournamentData.teams}];
我正在尝试在单独的JavaScript文件中访问此变量seeds
,但似乎无法访问它们。我一直在测试使用alert
来测试JavaScript文件中的种子内容,而不是团队。
这也是Jade生成的HTML:
var seeds = [{ name: 'Team 1',
_id: 5134d71192cf972226000003,
__v: 0,
key: 1362417425623 },{ name: 'Team 2',
_id: 5139dc66b48da58d0e000001,
__v: 0,
key: 1362746470498 },{ name: 'Team 3',
_id: 5139dda45f1598440f000001,
__v: 0,
key: 1362746788314 },{ name: 'Team 4',
_id: 513b2c66cfd50dce11000001,
__v: 0,
key: 1362832486554 }];
我如何访问JavaScript文件中的团队?我想将names
的{{1}}输出到Jade模板。
答案 0 :(得分:1)
这可能不完全是一个答案,但评论太长了......
看看这个jsfiddle:http://jsfiddle.net/KvXTA/
var seeds = [{ name: 'Team 1',
_id: 5134d71192cf972226000003,
__v: 0,
key: 1362417425623 },{ name: 'Team 2',
_id: 5139dc66b48da58d0e000001,
__v: 0,
key: 1362746470498 },{ name: 'Team 3',
_id: 5139dda45f1598440f000001,
__v: 0,
key: 1362746788314 },{ name: 'Team 4',
_id: 513b2c66cfd50dce11000001,
__v: 0,
key: 1362832486554 }];
console.log(seeds);
注意控制台如何输出
Uncaught SyntaxError: Unexpected token ILLEGAL
这是因为_id字段。我很惊讶你说序列化版本有同样的问题,因为它应该用引号包围ID。如果您根本不需要ID,可以使用替换函数在序列化版本中删除它们。
var seedsSerialized = JSON.stringify(teams, function (key, val) {
return key === '_id' ? undefined : val;
);
res.render('tournamentDetails', { seedsSerialized: seedsSerialized });
然后使用该序列化版本初始化模板中的seeds
。
script
var seeds = !{seedsSerialized};
我之前关于包含脚本顺序的评论不是一个问题,可能是另一个文件正在创建一个种子变量,而是你可能在seeds
之前包含了一个使用seeds
的文件。实际上宣布了。
例如:
<script src='logSeeds.js'></script>
<script>
var seeds = [ ... ];
</script>
其中logSeeds.js是:
console.log(seeds);
显然会输出undefined
,因为seeds
尚未宣布。这只是一个想法,不一定是你的情况。