javascript - 传递给 Jade 的对象最终作为字符串

标签 javascript node.js pug

我想将一个对象从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/

相关文章:

javascript - 如何使用 angularjs 编辑表中的特定列值?

android - npm 错误!在project@0.0.1启动脚本 'react-native start'处失败

javascript - 路由不重定向到静态文件

php - 云服务器需要向 Router 后面的客户端推送消息

Javascript正则表达式字符串——多行字符串的替换

javascript - 未捕获的 TypeError : Failed to resolve module specifier "firebase/app". 相对引用必须以 "/"、 "./"或 "../"开头

javascript - 从 JS 到 iphone 开发 - 最好从什么语言开始?

javascript - Jade bug 脚本加载顺序困惑

javascript - 如何在 CSS 中使用通过 Node.js 呈现的 Jade 文件中使用的图像

javascript - 从对象键 :value pairs in Jade 添加属性