Odoo模板语言中if的使用方法
How to use if in Odoo template language
我正在尝试使用与 Django 中相同的功能:
<div class="item {% if condition == True %}active{% endif %}">
在 Odoo 中我有:
<t t-foreach="list" t-as="l">
<a t-attf-href="/downloads/{{l.id}}" class="list-group-item"><t t-esc="l.name"/></a>
</t>
如果 "c.id = cat_id"
我需要附加 class "active"
在 Odoo 中是如何完成的?
我正在使用:
<t t-foreach="categories" t-as="c">
<t t-if="c.id == category_id">
<a t-attf-href="/downloads/{{c.id}}" class="list-group-item active"><t t-esc="c.name"/></a>
</t>
<t t-if="c.id != category_id">
<a t-attf-href="/downloads/{{c.id}}" class="list-group-item"><t t-esc="c.name"/></a>
</t>
</t>
但正在寻找更像 Python 的方式
我认为 QWeb 模板甚至不打算成为 Pythonic ;)
如果你愿意,你可以这样做:
<a t-attf-href="/downloads/{{c.id}}" t-attf-class="list-group-item {{ 'active' if c.id == category_id else '' }}">
<t t-esc="c.name"/>
</a>
尝试关注,
在小部件中准备一个函数来比较两个值并将 css 样式设置为该小部件的新 属性 样式。
init: function(parent,options){
//define 1 property to access this in template and set it from calling function
this.style = '';
this._super(parent,options);
}
get_comparison_result : function(cid,category_id){
var style = "";
if (cid != category_id){
//Add style here
style = "background-color:white";
}
else{
//Add style here
style = "background-color:green";
}
this.style = style;
return true;
}
然后您可以从模板调用它并将结果分配给变量并使用该结果。
<t t-if="widget.get_comparison_result(c.id, category_id)">
<t t-set="style" t-value="widget.style" />
</t>
<a t-attf-href="/downloads/{{c.id}}" t-att-style="style"><t t-esc="c.name"/>
我正在尝试使用与 Django 中相同的功能:
<div class="item {% if condition == True %}active{% endif %}">
在 Odoo 中我有:
<t t-foreach="list" t-as="l">
<a t-attf-href="/downloads/{{l.id}}" class="list-group-item"><t t-esc="l.name"/></a>
</t>
如果 "c.id = cat_id"
我需要附加 class "active"在 Odoo 中是如何完成的?
我正在使用:
<t t-foreach="categories" t-as="c">
<t t-if="c.id == category_id">
<a t-attf-href="/downloads/{{c.id}}" class="list-group-item active"><t t-esc="c.name"/></a>
</t>
<t t-if="c.id != category_id">
<a t-attf-href="/downloads/{{c.id}}" class="list-group-item"><t t-esc="c.name"/></a>
</t>
</t>
但正在寻找更像 Python 的方式
我认为 QWeb 模板甚至不打算成为 Pythonic ;)
如果你愿意,你可以这样做:
<a t-attf-href="/downloads/{{c.id}}" t-attf-class="list-group-item {{ 'active' if c.id == category_id else '' }}">
<t t-esc="c.name"/>
</a>
尝试关注,
在小部件中准备一个函数来比较两个值并将 css 样式设置为该小部件的新 属性 样式。
init: function(parent,options){
//define 1 property to access this in template and set it from calling function
this.style = '';
this._super(parent,options);
}
get_comparison_result : function(cid,category_id){
var style = "";
if (cid != category_id){
//Add style here
style = "background-color:white";
}
else{
//Add style here
style = "background-color:green";
}
this.style = style;
return true;
}
然后您可以从模板调用它并将结果分配给变量并使用该结果。
<t t-if="widget.get_comparison_result(c.id, category_id)">
<t t-set="style" t-value="widget.style" />
</t>
<a t-attf-href="/downloads/{{c.id}}" t-att-style="style"><t t-esc="c.name"/>