ListView,FormView和PageView之间有什么区别?在JScript中(ODOO | OpenERP)

时间:2015-09-14 14:54:34

标签: javascript openerp odoo

ListViewFormViewPageViewopenerp.web.XXXXXXXX.include({...之间的区别是什么?还有更多吗?我一直在努力学习JS for ODOO,但官方文档很差或不精确,我真的想知道如何正确使用它们?还有多少?如果你能分享一个关于这个主题的指南,那就太棒了。谢谢你的时间!

1 个答案:

答案 0 :(得分:4)

基本上,您可以学习具有所有可能属性的视图概念及其来自Odoo documentation的子元素。

<强>表单

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

  • 一次处理单个记录。
  • 可以包含其他结构组件(如笔记本,表格)。
  • 没有分拣范围和范围。搜索,因为目前只有单一记录。

<强>解释

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

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

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

  • 网络/静态/ SRC / JS / view_form.js
  • 网络/静态/ SRC / JS / view_list.js
  • 网络/静态/ SRC / JS / view_list_editable.js
  • 网络/静态/ SRC / JS / view_tree.js

其他支持功能侧边栏 xml_to_json xml_to_str json_node_to_xml fields_view_get views.js 中提供了许多其他内容。

Page是结构组件,因此它包含在formview中。

WEB的Javascript模块结构。

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

  1. Classes
  2. Widgets
  3. The QWeb Template Engine
  4. 课程

    就像模块一样,与大多数面向对象语言相反,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的模板语言:

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

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

    实现这一任务主要有两个方面。

    1. 根据需要添加/更新方法。
    2. 将创建的文件添加到正确的模板。
    3. 为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继承实现任何目的一样。