我有:
input(type="hidden" name="x" value=pax?pax.C1a:undefined)
当传递给
pax
的 response.render
为 { C1a: true }
时,输出呈现为:
<input type="hidden" name="x" value="value" />
不应该是“真实”吗?
当
pax.C1a
为假时,渲染为:
<input type="hidden" name="x" />
来自 HTML5 规范:
许多属性是布尔属性。元素上存在布尔属性表示真值,不存在该属性表示假值。
如果该属性存在,则其值必须是空字符串或与该属性的规范名称匹配的 ASCII 不区分大小写的值,并且没有前导或尾随空格。
注意: 布尔属性不允许使用值“true”和“false”。
<input type="hidden" name="x" value="value" />
就是我引用的第二段提到的第二种情况;第一种情况是 <input type="hidden" name="x" value />
,两者都代表真正的布尔值。该注释明确说明了您认为应该发生的事情 (value="true"
) 应该 不 发生。
如果你真的想要
value="true"
,你必须将其视为文本属性,并使用{ C1a: "true" }
进行渲染。
如果您需要将布尔属性作为字符串处理,您可以说:
input(type="hidden" name="x" value=pax?pax.C1a.toString():undefined) />
每个文档:https://pugjs.org/language/attributes.html#boolean-attributes