zoukankan      html  css  js  c++  java
  • odoo视图继承

    odoo视图继承

    简介继承

    • 在odoo里可以通过继承的方式来改写已经存在的view

    • 对比view的定义视图定义中写法多了inherit_id

    • inherit_id指向要改写的view

        <field name="inherit_id" ref="id_category_list"/>
      

    在arch里用xpath定位改写的元素

    <!-- 改写 ibuilding list 列表视图 -->
    <record id="building_list_view" model="ir.ui.view">
    	<field name="name">building.list.view</field>
    	<field name="model">ibuilding.list</field>
    	<field name="inherit_id" ref="building_list"/>
    	<field name="arch" type="xml">
        	<!-- 找到ids字段,在其后添加idea_id字段 -->
        	<xpath expr="//field[@name='ids']" position="after">
          	<field name="idea_id" string="Number of ideas"/>
        	</xpath>
    		<!-- 找到 upload 字段,在其后添加idea_ids字段 -->
        	<xpath expr="//field[@name='upload']" position="replace">
          	<field name="download" string="下载一个文件"/>
        	</xpath>
    	</field>
    </record>
    
    • 注意找到的元素必须是一个,如果定位出多个元素或者是空,都会报错。

    • expr Xpath表达式用来选择父视图中的某个元素,如果没找到或找到多个元素会抛出一个异常

    position定位有如下选择

    • inside 在内部结尾插入元素

    • replace 替换元素

    • before 在之前插入元素

    • after 在其后插入元素

    • attributes 修改xml的属性

    当仅匹配一个field时,erpr表达式可以简化如下

    <xpath expr="//field[@name='upload']" position="replace">
    	<field name="download" />
    </xpath>
    
    <field name="upload" position="replace">
    	<field name="download" />
    </field>
  • 相关阅读:
    ES6 Set.Map.Symbol数据结构
    ES6 class类 静态方法及类的继承
    ES6 浅谈Reflect
    ES6 proxy代理详解及用法
    Vue之生命周期函数
    Vue之自定义键盘修饰符、自定义指令
    v-show和v-if区别
    迭代器iterator
    es6之Proxy代理
    es6之symbol数据类型
  • 原文地址:https://www.cnblogs.com/chenshuquan/p/10535165.html
Copyright © 2011-2022 走看看