我想将一个对象从node传递到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)
});
Jade
script(type='text/javascript').
var problemOid = "!{Oid}" // this WORKS
script(type='text/javascript').
var problemObj = "!{JSON.parse(problemObject)}" // this does NOT
(注意webstorm将“problemObject”标记为 Unresolved 变量,而Oid似乎没有问题)
浏览器js
console.log(typeof problemObj); // string
console.dir(problemObj); // [object Object],[object Object]
我尝试过使用和不使用字符串化/解析,没有区别。 我做错了什么?
谢谢
解决方案
我通过删除引号并删除任何 JSON.xxxx 使其正常工作
工作代码:
script(type='text/javascript') var problemObj = !{problemObject};
最佳答案
删除逗号并使用 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>
关于javascript - 传递给 Jade 的对象最终作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290285/