Odoo14环境下QWeb模板动态设置布尔HTML属性的解决方案问询
解决方案
Odoo 14的QWeb引擎原生支持动态布尔属性渲染,你无需使用用于格式化字符串的t-attf-指令,改用普通的t-att-指令即可实现需求:
<input class="custom-control-input" type="radio" t-attf-name="radio-1" t-attf-id="radio-1" value="1" t-att-checked="elem_num == 0"/> <input class="custom-control-input" type="radio" t-attf-name="radio-2" t-attf-id="radio-2" value="2" t-att-checked="elem_num == 1"/> <input class="custom-control-input" type="radio" t-attf-name="radio-3" t-attf-id="radio-3" value="3" t-att-checked="elem_num == 2"/>
原理解释
- QWeb处理
t-att-{属性名}指令时,会判断后面表达式的返回值:- 如果返回值为
False、None这类假值,会完全省略该属性的输出,符合HTML布尔属性不存在即代表false的规则 - 如果返回值为真值,会自动输出标准的布尔属性格式
checked="checked",浏览器可正确识别为选中状态
- 如果返回值为
- 你之前使用的
t-attf-是字符串格式化专用指令,无论表达式返回什么结果都会把值作为属性值输出,因此会出现哪怕值为0、false也会渲染属性的问题,不适合用于布尔属性场景。
内容的提问来源于stack exchange,提问作者PauMAVA
相关产品推荐
相关产品推荐

