如何在使用jade传递变量时检查对象是否存在

时间:2014-02-21 15:03:21

标签: javascript node.js pug

在Jade中,您可以像这样将对象传递给客户端

路线:

res.render('mypage', {
  title: 'My Page',
  myobject : data
});

玉模板:

extends layout

block navbar
  include includes/navbar
block top
  include includes/top
block content
  script(src='/js/controllers/test-controller.js')
  script.
    var clientobj = !{JSON.stringify(myobject)}

但是如果myobject不存在怎么办?在使用它之前检查这个对象是否存在似乎是最简单的事情(因此如果它确实只尝试定义var clientobj)但是我在这里试图让这个发生。

例如:

res.render('mypage', {
  title: 'My Page'
});

目前会破坏给定的模板,必须有一些语法才能使这段代码更具弹性,当然......

1 个答案:

答案 0 :(得分:4)

以下代码段应该有所帮助。

script
    if myobject
        | var clientobj = !{JSON.stringify(myobject)}

请注意,您不应将.(点)放在script元素的末尾。否则if myobject ...将被视为文本,而不是Jade代码。

或者这也应该有效:

script.
    var clientid = #{myobject ? JSON.stringify(myobject) : "undefined"};

在这种情况下,您将获得以下HTML代码,并且您必须在页面中的JavaScrip代码中将clientid作为undefined处理。

<script>var clientid = undefined;</script>

我希望这会有所帮助