为什么真值会呈现为“值”?

问题描述 投票:0回答:2

我有:

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" />
pug
2个回答
3
投票

来自 HTML5 规范

许多属性是布尔属性。元素上存在布尔属性表示真值,不存在该属性表示假值。

如果该属性存在,则其值必须是空字符串或与该属性的规范名称匹配的 ASCII 不区分大小写的值,并且没有前导或尾随空格。

注意: 布尔属性不允许使用值“true”和“false”。

<input type="hidden" name="x" value="value" />
就是我引用的第二段提到的第二种情况;第一种情况是
<input type="hidden" name="x" value />
,两者都代表真正的布尔值。该注释明确说明了您认为应该发生的事情 (
value="true"
) 应该 发生。

如果你真的想要

value="true"
,你必须将其视为文本属性,并使用
{ C1a: "true" }
进行渲染。


0
投票

如果您需要将布尔属性作为字符串处理,您可以说:

input(type="hidden" name="x" value=pax?pax.C1a.toString():undefined) />

每个文档:https://pugjs.org/language/attributes.html#boolean-attributes

© www.soinside.com 2019 - 2024. All rights reserved.