Pug 语法中的三元运算符

Ternary operator in Pug syntax

是否可以在 Pug 代码中使用三元运算符?

我的尝试:

哈巴狗文件

- var disabled = true
input(type="checkbox" disabled ? disabled : null)

HTML 结果

<input disabled ? disabled : null></input>

HTML 想要的结果

<input disabled></input>

我知道描述 here 的标准条件 Pug 语法,但很难相信在现代 Pug 语法中没有机会使用三元运算符。

谢谢你的帮助!

您非常接近 - Pug 只需要一个属性即可开始处理。您的代码只是在进行评估,不属于任何属性。

因此,只需在前面添加您想要评估的属性,然后将三元运算符放在它之后。在这种情况下,您只希望 disabled 出现,仅此而已,所以让我们为 true 使用空字符串,为 false 使用空字符串,让哈巴狗知道该怎么做。

这里是 codepen

div
  - var disabled = true;
  input(disabled = disabled ? '' : null)

使用 true,哈巴狗生成 <input disabled>

使用 false,pug 生成 <input>

在这种情况下,如果您的变量是布尔值,您实际上不需要使用三元运算符。您可以将值分配给属性。 Pug 有一个用于处理 boolean attributes 的内置系统,如果文档类型为 html.

,它甚至可以呈现简洁(非镜像)属性

哈巴狗:

- var foo = true
input(type='checkbox', disabled= foo)
- var bar = false
input(type='checkbox', disabled= bar)

已呈现 HTML(如果文档类型为 html

<input type="checkbox" disabled />
<input type="checkbox" />