如何将对象从哈巴狗传递到前端javascript

Jor*_*jia 10 javascript node.js pugjs

我正在使用帕格,我想将一个变量传递给前端以获取信息,但是当我尝试这样做时,它会像文本一样传递.

这就是我这样做的方式.

控制器代码:

res.render('view/edit', {
     title: 'Title',
     sub:true,
     data: variableObject
 });
Run Code Online (Sandbox Code Playgroud)

这是渲染视图中的代码:

script(type='text/javascript').
    var x = "#{data}"
    console.log(x);
Run Code Online (Sandbox Code Playgroud)

这是日志的结果

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Run Code Online (Sandbox Code Playgroud)

我无法访问该对象因为是文本,有没有办法像对象一样传递对象?

dNi*_*tro 13

首先使用JSON.stringify以下对象进行字符串化

res.render('view/edit', {
     title: 'Title',
     sub: true,
     data: JSON.stringify(variableObject)
 });
Run Code Online (Sandbox Code Playgroud)

然后使用字符串插值,未转义 !{data}

script(type='text/javascript').
    var x = !{data}
    console.log(x);
Run Code Online (Sandbox Code Playgroud)


或者只是在模板中执行一次:

script(type='text/javascript').
    var x = !{JSON.stringify(data)}
    console.log(x);
Run Code Online (Sandbox Code Playgroud)

(感谢@Matt,谢谢)


Jor*_*jia 4

在本例中我使用了这个:

\n\n
var x = "#{ JSON.stringify(y) }"\n   console.log( JSON.parse(x.replace(/"/g,\'"\')) );\n
Run Code Online (Sandbox Code Playgroud)\n\n

I\xc2\xb4m 不确定这是否是最佳实践。

\n