odoo - 在 QWeb 模板中设置布尔属性
问题描述
我在使用 QWeb 引擎和布尔 HTML 属性时遇到问题。
我知道在 QWeb 渲染引擎中,我可以使用t-attf-{attribute name}
它来设置attribute name
格式字符串的值。问题是没有记录的方式(或者至少我无法在文档中找到它)如何根据上下文中的表达式或变量设置布尔属性。
问题是当使用布尔属性时:
如果一个布尔属性存在,它的值为真,如果它不存在,它的值为假。
所以我不能使用t-attf-checked
as usingt-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。
任何帮助表示赞赏。
解决方案
您可以有条件地使用t-att=mapping来定义checked
属性
来自 QWeb 模板属性文档:
t-att=mapping
如果参数是一个映射,每个(key, value)对生成一个新的属性和
它的值
例子:
t-att="elem_num==1 and {'checked': ''} or {}"
推荐阅读
- osgi - 在 Apache Felix 运行时设置 SSL 密钥库
- swift - 如何在 Catalyst 应用程序中将搜索栏放入 NSToolbar?
- ruby - 如何在 Ruby 中的标题元素之间进行选择
- sparql - SPARQL 语法更正
- sharepoint - MS Flow SharePoint“授予访问权限”操作因“项目不存在”而失败
- laravel - 向 Laravel 中的所有用户发送每周电子邮件的方法
- java - 如何使用 LatLng 获取起始位置/位置。我确实有一个移动的当前位置/位置
- java - 如何从文本文件中读取单个字符并将它们存储到二维数组中?
- python - 如何显示DataFrame的前N行
- react-native - 未捕获的错误:EXGL:gl.texImage2D() 的像素数据参数无效