将JSON作为pug中的javascript变量传递

ken*_*tor 2 javascript json node.js express pug

我想将一个对象数组传递到我的javascript代码块中,但我很挣扎,因为它会对结果进行html编码,以便我"在实际的JSON中有很多.

基本上我的路由器从redis商店获取JSON对象,我试图将其传递给模板:

redis.getBuffer('languages', function (err, result) {
    res.render('manager/create-project', { title: 'Create Project', breadcrumbs: req.breadcrumbs(), languages: result })
})
Run Code Online (Sandbox Code Playgroud)

我将它分配给我的变量:

script.
    $(document).ready(function() {
        var languages = #{languages};
Run Code Online (Sandbox Code Playgroud)

问题: 实际的javascript变量语言获取html编码的字符串,如下所示.

var languages = [{"id":"aa","text":"Afar"}]
Run Code Online (Sandbox Code Playgroud)

如何将JSON内容正确传递到javascript块?

und*_*ned 5

你需要插入而不需要转义.这可以通过使用!而不是来实现#.

例如,将模板更改为以下内容可以解决您的问题:

script.
    $(document).ready(function() {
        var languages = !{languages};
Run Code Online (Sandbox Code Playgroud)

作为参考,这里是文档的链接


Mad*_*apo 5

这样做的工作方式是(我知道这很可怕,但 PUG 是这样工作的)

script(type="text/javascript").
    $(document).ready(function(){
       var languages = !{JSON.stringify(languages)}
    });
Run Code Online (Sandbox Code Playgroud)

2018年工作

有关http://www.mircozeiss.com/how-to-pass-javascript-variables-from-a-server-to-angular 的更多信息