Files
odoo_source/addons/web/static/lib/qweb/qweb-test-call.xml
T
Christophe Matthieu 27ff895dfd [IMP] web: extend qweb to allow dynamic templates in t-call
Before this change the t-call can use only receive a literal as parameters:
<t t-call="template.name17" />
This call render the template 'template.name17' with the current context.

Now, we can defined an expression with braces (same syntax that t-attf):
<t t-call="template.name{{ 10 + 7 }}" />
This call render the template 'template.name17' with the current context.

This change allows for greater flexibility for applications using qweb.
(The performance due to this change is unchanged during rendering time.)
2017-05-04 17:19:25 +02:00

64 lines
1.8 KiB
XML

<templates>
<t t-name="_basic-callee">ok</t>
<t t-name="_callee-printsbody"><t t-esc="0"/></t>
<t t-name="_callee-uses-foo"><t t-esc="foo"/></t>
<t t-name="basic-caller">
<t t-call="_basic-callee"/>
</t>
<result id="basic-caller">ok</result>
<t t-name="with-unused-body">
<t t-call="_basic-callee">WHEEE</t>
</t>
<result id="with-unused-body">ok</result>
<t t-name="with-unused-setbody">
<t t-call="_basic-callee">
<t t-set="qux" t-value="3"/>
</t>
</t>
<result id="with-unused-setbody">ok</result>
<t t-name="with-used-body">
<t t-call="_callee-printsbody">ok</t>
</t>
<result id="with-used-body">ok</result>
<t t-name="with-used-setbody">
<t t-call="_callee-uses-foo">
<t t-set="foo" t-value="'ok'"/>
</t>
</t>
<result id="with-used-setbody">ok</result>
<!--
postfix to call removed because Python impl appends all whitespace
following called template's root to template result (+= element.tail)
-> ends up with bunch of extra whitespace in the middle of the
generated content. Could normalize, not sure current impl can be
fixed as-is
-->
<t t-name="inherit-context">
<t t-set="foo" t-value="1"/>
<t t-call="_callee-uses-foo"/><!-- - <t t-esc="foo"/> -->
</t>
<result id="inherit-context">1<!-- - 1 --></result>
<t t-name="scoped-parameter">
<t t-call="_basic-callee">
<t t-set="foo" t-value="42"/>
</t>
<!-- should not print anything -->
<t t-esc="foo"/>
</t>
<result id="scoped-parameter">
ok
</result>
<t t-name="basic-caller">
<t t-call="{{True and '_basic-callee' or 'other'}}"/>
</t>
<result id="basic-caller">ok</result>
</templates>