玉三元运算符添加元素

gra*_*atz 5 pug

想知道是否有办法编写if语句的三元或更短形式,当满足if时,将'a'元素添加到表格单元格.

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

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

以下确实有效,但是很长很啰嗦和不整洁.

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 -
Run Code Online (Sandbox Code Playgroud)

谢谢

rjr*_*eed 9

三元在玉中很好用.

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

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

each foo in bar
  p=foo.x ? foo.name + ' hasX' : foo.name + ' noX'
Run Code Online (Sandbox Code Playgroud)

结果是

<p>Joe hasX</p>
<p>Mike noX</p>
Run Code Online (Sandbox Code Playgroud)

  • 虽然我没有试过这个,但我不相信你可以添加三元组件中的玉元素吗?例如p = foo.x?a(href ='1234')foo.name +'hasX':foo.name +'noX' (2认同)

Ave*_*ery 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
Run Code Online (Sandbox Code Playgroud)


Jas*_*don 5

您也可以使用#{}

h6 #{(employee.Sprite > 0) ? "SPRITE" : "NO SPRITE"}
Run Code Online (Sandbox Code Playgroud)

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