vuvivian's blog

越努力,越幸运.

  1. 1. Qweb模板引擎
  2. 2.
    1. 2.1.  QWeb循环计算

Qweb模板引擎

Web客户端使用QWeb模板引擎来呈现小部件(除非它们重写renderelement方法来执行其他操作)。QWebJS模板引擎基于XML,主要与Python实现兼容。

现在,让我们解释如何加载模板。每当Web客户端启动时,都会对/web/web client/qweb路由进行RPC。然后,服务器将返回在每个已安装模块的数据文件中定义的所有模板的列表。正确的文件列在每个模块清单的QWeb条目中。

在启动第一个小部件之前,Web客户机将等待加载该模板列表。

这个机制可以很好地满足我们的需求,但有时我们希望懒加载模板。例如,假设我们有一个很少使用的小部件。在这种情况下,我们可能不希望将其模板加载到主文件中,以便使Web客户机稍微轻一些。在这种情况下,我们可以使用小部件的xmlpendencies键:

1
2
3
4
5
6
7
8
9
var Widget = require('web.Widget');

var Counter = Widget.extend({
template: 'some.template',
xmlDependencies: ['/myaddon/path/to/my/file.xml'],

...

});

有了这个,计数器小部件将以willstart方法加载xmlpendencies文件,这样在执行呈现时模板就可以准备好了。

 QWeb循环计算

1
2
3
4
5
6
7
		<t t-foreach="record.message_follower_ids.raw_value" t-as="rec">
<t t-esc="rec" />;
</t>

<button t-att-class="'btn oe_advanced_btn ' + (node.attrs.class ? node.attrs.class : 'btn-secondary')" t-att-data-typedef="node.attrs.type" t-att-data-name="node.attrs.name" t-att-data-id="node.attrs.btnId" t-att-data-access="node.attrs.accesskey">
<t t-esc="node.attrs.string" />
</button>
  • 切片: t-foreach=”record.message_follower_ids.raw_value.slice(0, 3)” 还可以
  • rec_index 从0开始循环索引
  • rec_size 要循环的记录集大小
  • rec_first 第一个元素
  • rec_last 最后一个元素
  • rec_even index为偶数时为真
  • rec_odd index为奇数时为真
  • rec_parity 是偶数和奇数
  • rec_all 表示循环结束的标识
  • rec_value 循环一个字典时,的键的值

https://www.cnblogs.com/dancesir/p/6702432.html

本文最后更新于 天前,文中所描述的信息可能已发生改变