17

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

我就是这样做的。

控制器代码:

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

这是渲染视图中的代码:

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

这是日志的结果

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

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

4

2 回答 2

24

首先使用字符串化您的对象JSON.stringify

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

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

script(type='text/javascript').
    var x = !{data}
    console.log(x);


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

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

(感谢@Matt,谢谢)

于 2017-01-31T22:16:45.237 回答
3

在这种情况下,我使用了这个:

var x = "#{ JSON.stringify(y) }"
   console.log( JSON.parse(x.replace(/"/g,'"')) );

我不确定这是否是最佳做法。

于 2017-01-31T22:51:49.710 回答