【问题标题】:Setting a boolean attribute in QWeb template在 QWeb 模板中设置布尔属性
【发布时间】:2021-11-16 07:49:19
【问题描述】:

我在使用 QWeb 引擎和布尔 HTML 属性时遇到问题。

我知道在 QWeb 渲染引擎中我可以使用t-attf-{attribute name} 来将attribute name 的值设置为格式字符串。问题是没有记录的方式(或者至少我无法在文档中找到它)如何根据上下文中的表达式或变量设置布尔属性。

问题是当使用boolean attributes:

如果一个布尔属性存在,它的值为真,如果它不存在,它的值为假。

所以我不能使用t-attf-checked,因为使用t-attf-checked="" 会将checked="" 放入标签中。以下也将评估为true,因为标签中标签的简单外观将评估为true

  • checked=""
  • checked="0"
  • checked="false"

例如,假设我有一个包含多个输入的单选列表和一个名为elem_num 的上下文变量。根据elem_num 的值,单选列表的输入应具有布尔属性checked

<input class="custom-control-input" type="radio" t-attf-name="radio-1" t-attf-id="radio-1" value="1"/>
<input class="custom-control-input" type="radio" t-attf-name="radio-2" t-attf-id="radio-2" value="2"/>
<input class="custom-control-input" type="radio" t-attf-name="radio-3" t-attf-id="radio-3" value="3"/>

elem_num == 0 时应选中第一个单选按钮,elem_num == 1 时应选中第二个单选按钮,elem_num == 2 时应选中第三个。

如何在不涉及任何 JavaScript 代码的情况下实现这一点?我正在使用 Odoo 14。

感谢任何帮助。

【问题讨论】:

    标签: odoo qweb


    【解决方案1】:

    您可以有条件地使用t-att=mapping 来定义checked 属性

    来自 QWeb 模板attributes 文档:

    t-att=mapping
       如果参数是一个映射,每个(键、值)对都会生成一个新属性和
      它的值

    示例:

    t-att="elem_num==1 and {'checked': ''} or {}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2015-05-19
      • 2020-01-11
      相关资源
      最近更新 更多