玉石三元运算符添加元素

6

想知道是否有一种写三元或更短的if语句的方法,当if条件满足时在表格单元格中添加'a'元素。

我尝试过这个,但它不起作用:

td= foo.x ? a(href="/#{foo.x}/foobar") View : '-'

以下代码可以工作,但比较冗长且杂乱。
tbody
each foo in bar
  tr
    td= foo.name
    if foo.x
      td
        a(href="/#{foo.x}/foobar") View
    else
      td -
    if foo.y
      td
        a(href="/#{foo.y}/hello") Hello
    else
      td -

谢谢

3个回答

9

在Jade中可以很好地使用三元运算符。

我根据您的问题轻松创建了一个工作示例:

- var bar=[{name:'Joe',x:'something'},{name:'Mike'}]

each foo in bar
  p=foo.x ? foo.name + ' hasX' : foo.name + ' noX'

导致结果
<p>Joe hasX</p>
<p>Mike noX</p>

2
虽然我没有尝试过,但我不认为你可以在三元运算符的部分中添加jade元素,例如p = foo.x?a(href ='1234')foo.name +' hasX':foo.name +' noX'。 - gratz
1
是的,它不起作用。不过有一些可行的hack方法。 示例:http://codepen.io/rjreed/pen/zGeFh - rjreed

6
你也可以使用#{}
h6 #{(employee.Sprite > 0) ? "SPRITE" : "NO SPRITE"}

当 employee.Sprite 是数据中的一个数字时...


5

没有三目运算符(我所知道的!)在Jade中。事实证明,有一个三元运算符。然而,为了缩短你的代码,你可以声明块并在if/else部分中使用它们。虽然这在技术上增加了代码行数,但我认为这有助于解决长时间的if/else语句问题。

使用你的示例:

block x_view
  td
    a(href="/#{foo.x}/foobar") View

block dash
  td -

block y_hello
  td
    a(href="/#{foo.y}/hello") Hello

tbody
each foo in bar
  tr
    td= foo.name
    if foo.x
      block x_view
    else
      block dash
    if foo.y
      block y_hello
    else
      block dash

@rjreed 哦,奇怪,我找不到任何关于它们的文档,也无法让它们工作。我会编辑我的帖子。 - Avery
1
我在下面发布了一个超级简单的工作示例。它们非常有用。Jade的文档还有很多需要改进的地方-也许我会为文档编写三元示例并提交请求。 - rjreed
@rjreed 我在测试时可能忘记了一些简单的东西... 话说,网站上(https://www.google.com/webhp#q=site%3Ajade-lang.com%20ternary)没有关于它们的任何信息,所以我不觉得太糟糕。 - Avery

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