ListView
中FormView
,PageView
和openerp.web.XXXXXXXX.include({...
之间的区别是什么?还有更多吗?我一直在努力学习JS for ODOO,但官方文档很差或不精确,我真的想知道如何正确使用它们?还有多少?如果你能分享一个关于这个主题的指南,那就太棒了。谢谢你的时间!
答案 0 :(得分:4)
基本上,您可以学习具有所有可能属性的视图概念及其来自Odoo documentation的子元素。
<强>表单强>
表单视图用于显示单个记录中的数据。他们的根元素是<form>
。它们由具有附加结构和语义组件的常规HTML组成。
<强>解释强>
列表视图的根元素是<tree>
。列表视图的根目录可以具有以下属性:
odoo中的每个视图都有javascript文件,你可以从WEB模块中引用它。
其他支持功能侧边栏, xml_to_json , xml_to_str , json_node_to_xml , fields_view_get views.js 中提供了许多其他内容。
Page是结构组件,因此它包含在formview中。
WEB的Javascript模块结构。
JavaScript模块主要基于这三个概念构建。
课程:
就像模块一样,与大多数面向对象语言相反,javascript并不构建在类中,尽管它提供了大致相同(如果是更低级别和更详细)的机制。 为了简单和开发人员友好,Odoo web提供了基于Javascript Inheritance的类系统。
小工具:
Odoo Web客户端捆绑了jQuery以便于DOM操作。它比标准的W3C DOM2更有用,并提供了更好的API,但不足以构建复杂的应用程序,导致难以维护。
与面向对象的桌面UI工具包(例如Qt,Cocoa或GTK)非常相似,Odoo Web使特定组件负责页面的各个部分。在Odoo web中,这些组件的基础是Widget()类,这是一个专门处理页面部分并为用户显示信息的组件。
QWeb模板引擎:
这允许生成和显示任何类型的内容,但在生成大量DOM(大量重复,引用问题,......)时变得难以操作
与许多其他环境一样,Odoo的解决方案是使用template engine。 Odoo的模板引擎称为QWeb。
QWeb是一种基于XML的模板语言:
示例:(检索每页的视图记录数,默认为80,您可以通过覆盖此方法更新))
实现这一任务主要有两个方面。
为javascript文件添加此函数,并使用模板继承将此文件添加到web_backend资源中,然后将自动生成此代码的效果。
instance.web.ListView.include({
limit : function(){
if (this._limit === undefined) {
this._limit = (this.options.limit
|| this.defaults.limit
|| (this.getParent().action || {}).limit
|| 160);
}
return this._limit;
},
});
Xml代码:
<template id="assets" inherit_id="web.assets_backend">
<xpath expr="//script[@src='/web/static/src/js/view_tree.js']" position="after">
<script type="text/javascript" src="your script file path"></script>
</xpath>
</template>
安装模块并查看效果,就像使用javascript继承实现任何目的一样。