玉三元运算符添加元素

时间:2014-02-01 00:14:07

标签: pug

想知道是否有办法编写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 个答案:

答案 0 :(得分:9)

三元在玉器上工作正常。

我根据你的问题松散地做了一个快速工作的例子:

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

答案 1 :(得分: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

答案 2 :(得分:4)

您还可以使用#{}

h6 #{(employee.Sprite > 0) ? "SPRITE" : "NO SPRITE"}

其中employee.Sprite是数据中的数字......