ListView, FormView和PageView的区别是什么?在JScript for (ODOO | OpenE

What is the difference bettween ListView, FormView, and PageView? in JScript for (ODOO | OpenERP)

本文关键字:for JScript ODOO OpenE 是什么 FormView PageView 区别 ListView      更新时间:2023-09-26

openerp.web.XXXXXXXX.include({...ListViewFormViewPageView的区别是什么?还有更多吗?我一直在尝试为ODOO学习JS,但官方文档很差或不精确,我真的想知道如何正确使用它们?还有多少呢?如果你能分享一个关于这个话题的指导方针,那就太好了。谢谢你的时间!

基本上你可以从Odoo文档中学习所有可能的属性和它的子元素的视图的概念。

表单视图用于显示单个记录中的数据。它们的根元素是<form>。它们由常规HTML和附加的结构和语义组件组成。

  • 一次处理单个记录
  • 可包含其他结构组件(如笔记本,表格)。
  • 没有排序& &;查找,因为目前只有一条记录。

列表视图的根元素是<tree>。列表视图的根目录可以有以下属性:

  • 显示树形记录集
  • 不能包含任何结构组件。
  • 可以搜索和排序。

odoo中的每个视图都有javascript文件,你可以从WEB模块中引用它。

  • Web/静态/src/js/view_form.js
  • Web/静态/src/js/view_list.js
  • Web/静态/src/js/view_list_editable.js
  • Web/静态/src/js/view_tree.js
和其他支持函数侧边栏xml_to_jsonxml_to_strjson_node_to_xmlfields_view_get和许多其他函数都可以在views.js中使用。

Page是结构组件,所以它被覆盖在formview中。

JavaScript模块主要是基于这三个概念构建的。

  1. <
  2. 小部件/strong>
  3. QWeb模板引擎

Classes:

与模块一样,与大多数面向对象语言相反,javascript并不是在类中构建的,尽管它提供了大致相同的(如果较低级且更详细)机制。为了简单和开发人员友好,Odoo web提供了一个基于Javascript继承的类系统。

<

小部件/strong>:

Odoo web客户端捆绑jQuery,方便DOM操作。它很有用,并且提供了比标准W3C DOM2更好的API,但不足以构建复杂的应用程序,从而导致难以维护。

很像面向对象的桌面UI工具包(例如Qt, Cocoa或GTK), Odoo Web使特定的组件负责页面的各个部分。在Odoo web中,此类组件的基础是Widget()类,该组件专门用于处理页面部分并为用户显示信息。

QWeb模板引擎:

这允许生成和显示任何类型的内容,但是在生成大量DOM(大量重复,引用问题,…)时变得笨拙

与许多其他环境一样,Odoo的解决方案是使用模板引擎。Odoo的模板引擎叫做QWeb。

QWeb是基于xml的模板语言:

  • 完全用JavaScript实现,并在浏览器中呈现
  • 每个模板文件(XML文件)包含多个模板
  • 它在Odoo Web的Widget()中有特殊的支持,尽管它可以使用在Odoo的web客户端之外(并且可以使用Widget()不依赖QWeb)

示例:(检索视图每页的记录数,默认为80,您可以通过重写此方法更新它)

要完成这类任务主要有两个方面。

  1. 根据需要添加/更新方法。
  2. 将创建的文件添加到适当的模板中。

为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继承