一、效果图

自定义添加顶部按钮,实现自定义方法。

二、实现过程

1、需要用到三个文件,tree_view_button.js、tree_view_odoo.xml、base.xml三个文件,文件目录如下。

2、tree_view_button.js代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <template id="template_01" xml:space="preserve">
  3. <!-- 拓展Tree视图增加自定义按钮 -->
  4. <t t-extend="ListView.buttons">
  5. <t t-jquery="div.o_list_buttons" t-operation="append">
  6.  
  7. <t t-if="widget.model == 'res.users'">
  8. <button class="btn btn-primary btn-sm o_list_tender_button_create" type="button">数据同步</button>
  9. </t>
  10. </t>
  11. </t>
  12.  
  13. <!--&lt;!&ndash; 拓展Form视图增加自定义按钮 &ndash;&gt;-->
  14. <!--<t t-extend="FormView.buttons">-->
  15. <!--<t t-jquery="button.o_form_button_create" t-operation="after">-->
  16. <!--<button type="button" class="btn btn-primary o_list_tender_button_say_hello" style="display:inline-block;">Form:Say Hello</button>-->
  17. <!--</t>-->
  18. <!--</t>-->
  19. </template>

3、tree_view_button.js代码:

  1. odoo.define('coordination_center.tree_view_button', function (require) {
  2. "use strict";
  3. var core = require('web.core');
  4. var ListView = require('web.ListView');
  5. var QWeb = core.qweb;
  6. var Model = require('web.Model');
  7. ListView.include({
  8. render_buttons: function ($node) {
  9. var self = this;
  10. this._super($node);
  11. //自定义按钮click事件绑定处理方法
  12. this.$buttons.find('.o_list_tender_button_create').click(this.proxy('tree_view_action'));
  13. },
  14. /**
  15. * 实现自定义按钮的事件
  16. */
  17. tree_view_action: function () {
  18. console.log('点击事件!!!!');
  19.  
  20. var compose_model = new Model('tb.odoo');
  21. compose_model.call('tb_odoo_tong');
  22.  
  23. console.log('点击事件结束!!!!');
  24. }
  25. });
  26. });

tb.odoo是我model名称,tb_odoo_tong是我的方法名称。

4、base.xml,引入自定义的js。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <odoo>
  3. <template id="assets_backend" name="tree view menu" inherit_id="web.assets_backend">
  4. <xpath expr="." position="inside">
  5. <script type="text/javascript" src="/coordination_center/static/src/js/tree_view_button.js"></script>
  6. </xpath>
  7. </template>
  8. </odoo>

5、最后记得在__manifest__.py文件中引入xml文件。

tree_view_odoo.xml文件需要用qweb映入。

  1. 'qweb':[
  2. 'static/src/xml/tree_view_odoo.xml'
  3. ]

odoo添加顶部按钮实现自定义方法的更多相关文章

  1. Angular回到顶部按钮指令

    之前的分页代码指令化在线下测试没有问题,到服务器上就不运行了,所以那个先放一放. 今天来把"回到顶部"按钮指令化.首先是页面html: <!--回弹按钮--> < ...

  2. iOS 为键盘添加隐藏按钮

    // 为键盘添加隐藏按钮 UIToolbar * backView = [[UIToolbar alloc]initWithFrame:CGRectMake(, , , )]; [backView s ...

  3. 【Android】ListView监听上下滑动(判断是否显示返回顶部按钮

    设置滚动监听判断ListView的滚动方向同时获取屏幕高度.ListView实际高度,判断是否需要展示返回顶部按钮 package com.zihao.activity;   import java. ...

  4. 如何给magento的产品页面添加返回按钮

    如何给magento的产品页面添加返回按钮,最模板提供教程 第一步: 打开 E:\xampp\htdocs\magento\skin\frontend\default\bluescale\css\st ...

  5. iOS之自定义UITabBar替换系统默认的(添加“+”号按钮)

    自定义UITabBar替换系统默认的,目的是为了在UITabBar中间位置添加一个“+号按钮”,下面我们来聊聊具体的实现. 1.自定义WBTabBar,让其继承自UITabBar,代码如下: // / ...

  6. Visual Studio 2008中添加运行按钮 转载

    在Visual Studio 2008中添加运行按钮 默认情况下,VS2008中的工具栏上没有运行按钮,只有调试(Debug)按钮,可按照以下方法添加 1.点击菜单Tools(工具)->Cust ...

  7. EasyUI 1.3.6 DateBox添加清空按钮

    EasyUI 1.3.6 DateBox添加清空按钮 效果如图: EasyUI datebox是没有清空按钮的,可通过如下方法加入: 打开jquery.easyui.min.js看到这样如此乱的代码, ...

  8. UWP 返回顶部按钮

    返回顶部的按钮,like this 当用户下滑了一定的距离之后,通常是快滑倒底部的时候,出现返回顶部按钮,当用户向上快滑,滑到顶部的时候,返回顶部按钮自动消失. 在UWP中,用来滚动内容的控件是Scr ...

  9. 简单地做一下“回到顶部”按钮,用jQuery实现其隐藏和显示

    1.首先,我们要准备HTML代码: <div id="return-top"> <a href="#top">返回顶部</a> ...

随机推荐

  1. Hive之函数与自定义函数

    系统自带的函数 1)查看系统自带的函数 hive> show functions; 2)显示自带的函数的用法 hive> desc function upper; 3)详细显示自带的函数的 ...

  2. 跟着大彬读源码 - Redis 6 - 对象和数据类型(下)

    继续撸我们的对象和数据类型. 上节我们一起认识了字符串和列表,接下来还有哈希.集合和有序集合. 1 哈希对象 哈希对象的可选编码分别是:ziplist 和 hashtable. 1.1 ziplist ...

  3. 加深对C#数据类型的认识

    值类型: 值类型源于System.Value家族,每个值类型的对象都有一个独立的内存区域用于保存自己的值,值类型 所在的内存区域称之为栈(Stack),只要在代码中修改它,就会在内存区域保存这个值. ...

  4. Spring的依赖注入和管理Bean

    采用Spring管理Bean和依赖注入 1.实例化spring容器 和 从容器获取Bean对象 实例化Spring容器常用的两种方式: 方法一: 在类路径下寻找配置文件来实例化容器 [推荐使用] Ap ...

  5. 1.Go语言copy函数、sort排序、双向链表、list操作和双向循环链表

    1.1.copy函数 通过copy函数可以把一个切片内容复制到另一个切片中 (1)把长切片拷贝到短切片中 package main import "fmt" func main() ...

  6. web渗透---第一天

    了解黑客     黑客: 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现, 灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是 出现了“骇客”与黑客”分家. 黑客:Hacker 骇 ...

  7. Golang高效实践之array、slice、map

    前言 Golang的slice类型为连续同类型数据提供了一个方便并且高效的实现方式.slice的实现是基于array,slice和map一样是类似于指针语义,传递slice和map并不涉及底层数据结构 ...

  8. 【游记】NOIP2018初赛

    声明 本文最初的版本创建之时,本人甚至只是个电脑的小白,因而不太会用电脑编辑文字,最初的版本写在一个Word文档里,被随意的丢弃在我杂乱无比的网盘的某一个角落,直到我决定整理自己的成长历程,将散落的游 ...

  9. unity 四叉树管理场景

    当场景元素过多时,需要实时的显示及隐藏物体使得性能提示,但是物体那么多,怎么知道哪些物体需要显示,哪些物体不需要显示的.当然,遍历物体判断该物体是否可以显示是最容易想到的方法,但是每次更新要遍历所有物 ...

  10. 基于opencv,开发摄像头播放程序

    前言 Windows下实现摄像视频捕捉有多种实现方式:各种方式的优劣,本文不做对比.但是,opencv是一款老牌开发库,在图像处理领域声名显赫.采用opencv来处理摄像视频,在性能和稳定性上,是有保 ...