openerp.web.XXXXXXXX.include({…?还有ListView,FormView和PageView之间有什么区别?还有更多吗?我一直在尝试为ODOO学习JS,但是官方文档很差或不够精确. ,我真的想知道如何正确使用它们?还有多少呢?,如果您可以分享有关此主题的指南,那将是非常不错的.感谢您的宝贵时间!
解决方法:
基本上,您可以学习具有所有可能的属性及其从Odoo documentation开始的子元素的视图概念.
形式
表单视图用于显示单个记录中的数据.它们的根元素是< form>.它们由常规HTML以及其他结构和语义组件组成.
>一次处理单个记录.
>可以包含其他结构部件(例如笔记本电脑,板材).
>不能进行分类和分类.搜索,因为目前只有一条记录.
清单
列表视图的根元素是< tree>.列表视图的根可以具有以下属性:
>在树中显示记录集.
>不能包含任何结构组件.
>可以搜索和排序.
odoo中每个视图都有javascript文件,您可以从WEB模块中引用它.
> Web / static / src / js / view_form.js
> Web / static / src / js / view_list.js
> Web / static / src / js / view_list_editable.js
> Web / static / src / js / view_tree.js
其他支持功能边栏,xml_to_json,xml_to_str,json_node_to_xml,fields_view_get以及许多其他功能都可以在views.js中使用.
页面是结构组件,因此在formview中被覆盖.
WEB的Javascript模块结构.
JavaScript模块主要基于这三个概念进行构造.
> Classes
> Widgets
> The QWeb Template Engine
课程:
与大多数模块一样,与大多数面向对象的语言相反,javascript虽然可以提供大致等效的(如果是较低级别且较冗长的)机制,则它不会在类中构建.
为简单起见和对开发人员友好,Odoo Web提供了基于Javascript Inheritance的类系统.
小部件:
Odoo Web客户端将jQuery捆绑在一起,以简化DOM操作.它比标准的W3C DOM2有用并且提供了更好的API,但是不足以构成复杂的应用程序,从而导致难以维护.
与面向对象的桌面UI工具包(例如Qt,Cocoa或GTK)非常相似,Odoo Web制作了负责页面各部分的特定组件.在Odoo网站中,此类组件的基础是Widget()类,该类专门处理页面部分并为用户显示信息.
QWeb模板引擎:
这允许生成和显示任何类型的内容,但是在生成大量DOM(大量重复,引用问题等)时变得笨拙.
与许多其他环境一样,Odoo的解决方案是使用template engine.Odoo的模板引擎称为QWeb.
QWeb是基于XML的模板语言:
>它完全用JavaScript实现并在浏览器中呈现
>每个模板文件(XML文件)包含多个模板
>尽管可以使用,但它在Odoo Web的Widget()中具有特殊支持
在Odoo的Web客户端之外(可以使用Widget()
不依赖QWeb)
示例:(检索视图的每页记录数,默认为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继承可以完成任何事情一样.