在jade中传递变量的正确语法

时间:2015-06-16 09:00:17

标签: pug

我试图从routes / index.js传递一个测试数据:



/* GET Hello World page. */
router.get('/helloworld', function(req, res) {
  res.render('helloworld', { title: 'Hello, World!', data: {'val' : 'This is a Test'}})
});




to views / helloworld.jade:



extends layout

block content
  h1= title
  p Welcome to #{title}
    script(type='text/javascript').
    var data = !{JSON.stringify(data)};




我在浏览器中的结果是:



Hello, World!

Welcome to Hello, World!data = ;




我没有收到任何错误消息,但如何让数据显示在浏览器中?

感谢。

3 个答案:

答案 0 :(得分:0)

你有没有费心阅读文件?

所有纯文本都在带有竖线字符的新行上缩进。

extends layout

block content
  h1= title
  p
    | Welcome to
    !{title}
  script(type="text/javascript")
    | var data = JSON.stringify(
    !{data}
    | );

我实际上无法告诉你用脚本做什么,但这是我最好的猜测。

答案 1 :(得分:0)

这很有效。在routes / index.js中:



router.get('/helloworld', function(req, res) {
  res.render('helloworld', { title: 'Hello, World!', data:{'val':'This is a Test'}})
});




在views / helloworld.jade中:



extends layout

block content
  h1= title
  p Welcome to #{title}
  script(type='text/javascript').
  var data = !{JSON.stringify(data)};




我的浏览器输出是:



Hello, World!

Welcome to Hello, World!
data = {"val":"This is a Test"};




但请看这篇文章中的答案1:transfer data from jade to jquery and vice versa他们所拥有的代码并不起作用。 " JSON.stringify"不会在路由器文件中工作,如果你缩进" var"视图文件中有2个空格,它也不会起作用。我在文档中看不到任何原因。接下来我需要实际使用"数据"变量要在html文件中打印出来,但无法找到该怎么做。我应该耐心等待,但我已准备好继续使用Jade的另一个模板引擎。其他人有类似的挫折感吗?

答案 2 :(得分:0)

这是各种方法的输出,第一种方法是最好的。我不认为你想在routes / index.js中对对象进行字符串化,因为那时你无法在helloworld.jade文件中对数据进行维护。所以我保留了index.js。视图/ helloworld.jade:

extends layout

block content
  h1= title
  p These 2 work and are the same
  p #{data.val}
  p !{data.val}
  p Without the extension returns an object
  p #{data}
  p !{data}
  Trying to stringify almost works except has quotes
  p #{JSON.stringify(data)}
  p #{JSON.stringify(data.val)}
  p !{JSON.stringify(data.val)}
  p Trying to set a variable doesn't seem to work at all
  script(type='text/javascript').
    var newdata = !{JSON.stringify(data)};
  p The variable output
  p #{newdata}
  p bottom of file
  script(type='text/javascript').
    console.log("testing");

这是输出:

Hello, World!

These 2 work and are the same

This is a Test

This is a Test

Without the extension returns an object

[object Object]

[object Object]
to stringify almost works except has quotes

{"val":"This is a Test"}

"This is a Test"

"This is a Test"

Trying to set a variable doesn't seem to work at all

The variable output

bottom of file

我无法想出一种设置变量并将其显示在.jade文件中的方法,但毫无疑问,这是一种我不知道的方式。希望这有助于其他人遇到同样的问题。