我想将一个对象从节点传递给jade,并在我的js中使用它。
但它最终为[object Object]
字符串,我不知道为什么
服务器侧
var currentProblem = problemMaker.makeProblem(level);
console.dir(currentProblem); // [ { value: 2, operation: '+' }, {value: 1, operation: '-' } ]
res.render('training', {
// ...
Oid : problemOid,
problemObject : JSON.stringify(currentProblem)
});
玉
script(type='text/javascript').
var problemOid = "!{Oid}" // this WORKS
script(type='text/javascript').
var problemObj = "!{JSON.parse(problemObject)}" // this does NOT
(请注意,webstorm标记" problemObject"作为未解析的变量,而Oid似乎没有问题)
浏览器js
console.log(typeof problemObj); // string
console.dir(problemObj); // [object Object],[object Object]
我尝试使用和不使用stringify / parse,没有区别。 我做错了什么?
感谢
我通过删除引号并删除任何JSON.xxxx
来实现它工作代码:
script(type='text/javascript') var problemObj = !{problemObject};
答案 0 :(得分:3)
删除逗号并使用JSON.stringify
代替JSON.parse
script var problemObj = !{JSON.stringify(problemObject)};
这里的主要想法
var str = JSON.stringify({a: 1000}); // returns string "{"a":1000}"
console.log(str); // print {"a":1000}
所以,在你的html中你会看到
script var str = !{JSON.stringify({a: 1000})};
->
<script>
var str = {"a":1000};
</script>