我想将整个对象直接传递给javascript,但它似乎无法正常工作。 我尝试了{{{data}}}方法和{{data}}方法,就像其他帖子中推荐的方法一样。 我在把手文件中做了类似的事情:
<script>
var myData = {{data}}; // or even {{{data}}}
</script>
这两个都给了我异常:Uncaught SyntaxError:Unexpected Identifier。 但是,如果我做了
var myDataUrl = "{{data.url}}";
它工作正常,但对于第一种情况,它打印出&#34; [Object Object&#34;]。关于如何让案例1发挥作用的任何想法?
答案 0 :(得分:4)
要将Javascript数据直接插入模板,您需要将其转换为合法的javascript字符串并将该字符串传递到模板中。它必须是合法的Javscript才能进入模板。使用类似JSON.stringify()
之类的东西是制作合法Javascript的一种方式,但它不是唯一的方法。
这是我的一个把手模板中的一块,它将一些javascript数据结构插入到HTML文件中:
<script>
// temperature data - array of arrays of the form [dateTime, atticTemp, outsideTemp]
var temperatureData = {{{temperatures}}};
// onOffData is an array of [dateTime, str] - where str is "on" or "off"
var onOffData = {{{onOffData}}};
</script>
并且,传递给模板的数据看起来像这样(两个方法调用返回JSON字符串):
app.get('/chart', function(req, res) {
var tempData = {
temperatures: data.getTemperatureDataSmallJSON(),
onOffData: data.getFanOnOffDataSmallJSON(),
units: req.cookies.temperatureUnits
};
res.render('chart', tempData);
});
这会产生一个HTML文件,如下所示:
<script>
// temperature data - array of arrays of the form [dateTime, atticTemp, outsideTemp]
var temperatureData = [[1412752013861,22.19,16.35],[1412753505591,22,16.15],[1412754286561,21.85,15.94]];
// onOffData is an array of [dateTime, str] - where str is "on" or "off"
var onOffData = [[1411786960889,"off"],[1411790853867,"off"]];
</script>
注意,我将数据转换为JSON并将该JSON字符串传递给模板。