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

4
在Jade中,你可以像这样将对象传递给客户端:
路由:
res.render('mypage', {
  title: 'My Page',
  myobject : data
});

Jade模板:

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)}

但是如果我的对象不存在怎么办?在使用它之前检查这个对象是否存在似乎是最简单的事情(因此只有在该对象存在时才尝试定义变量clientobj),但我一直在努力实现这一点。

例如:

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

当前代码会破坏给定的模板,必须有一些语法使代码更具弹性。


为什么不在创建clientobj之后进行检查?如果没有任何内容,它将是“未定义的”。 - tymeJV
为什么不使用Jade的if条件语句呢? - Mukesh Soni
1个回答

4
以下代码片段应该会有所帮助。
script
    if myobject
        | var clientobj = !{JSON.stringify(myobject)}

请注意,在 script 元素的末尾不应该加上 .(点)。否则,if myobject ... 将被视为文本而非 Jade 代码。
另一种方法也可以:
script.
    var clientid = #{myobject ? JSON.stringify(myobject) : "undefined"};

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

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

我希望这能有所帮助。


啊哈。叹气,我一定尝试了5种不同的条件语句变体,但都是将检查放在脚本标记外面,使用jade,而不是像这样放在里面。谢谢。 - Oliver Lloyd
@OliverLloyd,很高兴我能帮助你解决问题。 - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接