I would like to use the value rendered in Node.js for Google Chart.
However, I can not successfully pass variables rendered on the server side to javascript on the client side.
I am using Node.js, Express and Pug. Here is the code.
HTML(index.pug)
DataTest
I used the "tests" variable in javascript as follows, but it did not go well
javascript
void setupSpec() {
mockDomains Foo, Tenant
}
Node.js
List<Class> getDomainClasses() { [Foo, Tenant] }
How can I pass "tests" variables to javascript on the client side?
答案 0 :(得分:1)
为了在页面中定义服务器端Javascript变量,您必须插入PUG语法,将Javascript变量定义呈现到页面中。对于您的tests
变量,您可以在模板中添加以下内容:
script.
var tests = #{tests};
并且,将传递给模板的内容更改为:
res.render('index', {
tests: JSON.stringify(tests)
});
然后,当呈现页面时,它将显示为:
<script>
var tests = [[0, 0],[1, 10],[2, 23],[3, 17],[4, 18]];
</script>
您的变量将在您的页面中定义。
您也不必单独定义变量,只需将#{tests}
放在Javascript的中间,在那里您想要使用该值并将数组插入到需要它的地方。无论哪种方式都可以。
P.S。您永远不应该使用for/in
迭代数组,因为它会迭代对象的所有属性,而不仅仅是有时会工作的数组条目,但不一定总是(可能包含对象的其他属性)。在ES5中,使用传统的for(var i = 0; i < array.length; i++)
循环或使用.forEach()
。在ES6中,使用for/of
。