首页 > 编程语言 >odoo 通过Javascript显示或隐藏form自带按钮

odoo 通过Javascript显示或隐藏form自带按钮

时间:2023-02-20 12:01:03浏览次数:36  
标签:显示 form button Javascript odoo find 按钮 隐藏

实践环境

Odoo 14.0-20221212 (Community Edition)

需求描述

如下,根据条件对form视图自带按钮的显示、隐藏进行控制

代码实现

隐藏、显示编辑和创建按钮为例

odoo14/custom/estate/static/src/js/hide_or_show_form_button.js

function isHideEditButton(arg){ // 自定义函数,用途参见下文
    if (arg === 'Sold') {
        return true
    }
    return false
}

odoo.define('estate.hide_or_show_form_button', function (require) {
    'use strict';

    let modelConfigs = {
        'estate.property': { // form表单视图归属模型,即需要对按钮的显示做管控的模型名称
             /* hideEditButton hideCreateButton的值可以简单理解为eval函数的参数,形如 eval(arg),整个表达式计算结果为bool值
             值为真则表示需要隐藏按钮,否则显示按钮
             如果不配置hideEditButton键,则表示显示编辑按钮,类似的,如果不配置hideCreateButton键,则显示创建按钮
             */
            'hideEditButton': 'isHideEditButton(this.renderer.state.data.state)', // 可选,是否隐藏编“Edit”编辑按钮 字符串类型
            'hideCreateButton': "this.renderer.state.data.state === 'Sold'", // 可选,是否隐藏“Create”创建按钮 字符串类型
        }
    };

    let FormController = require('web.FormController');

    FormController.include({
        updateButtons: function(){
            let res = this._super.apply(this, arguments);

            if (modelConfigs.hasOwnProperty(this.modelName)) {
                // 控制显示或者隐藏编辑按钮
                if (eval(modelConfigs[this.modelName].hideEditButton)) {
                    this.$buttons.find('.o_form_button_edit').hide();
                } else {
                    this.$buttons.find('.o_form_button_edit').show();
                }
           
                // 控制显示或者隐藏创建按钮
                if (eval(modelConfigs[this.modelName].hideCreateButton)) {
                    this.$buttons.find('.o_form_button_create').hide();
                } else {
                    this.$buttons.find('.o_form_button_create').show();
                }
            }
            return res;
        }
    });
})

说明:

  • 如果需要隐藏其它自带按钮、或自定义按钮,可以通过查看form视图的html结构,依葫芦画瓢。
  • 根据实际需求,可以通过在js中打印this对象,以获取更多判断是否隐藏、显示按钮的有用信息。

加载自定义js

odoo14\custom\estate\views\webclient_templates.xml

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <template id="assets_common" inherit_id="web.assets_common" name="Backend Assets (used in backend interface)">
         <xpath expr="//script[last()]" position="after">
             <script type="text/javascript" src="/estate/static/src/js/hide_or_show_form_button.js">
         </xpath>
    </template>
</odoo>

标签:显示,form,button,Javascript,odoo,find,按钮,隐藏
From: https://www.cnblogs.com/shouke/p/17135860.html

相关文章

  • Oracle Form 简单实现CSV文件导入功能
    转载于 OracleForm简单实现CSV文件导入功能-kiko_0926-博客园(cnblogs.com) 功能说明在FORM界面增加“上传”按钮,点击“上传”按钮,会打开一个窗口,点击“上传......
  • HDOU2139 Calculate the formula
    链接:​​http://acm.hdu.edu.cn/showproblem.php?pid=2139​​很有意思,又是一个java过不了的题目。之前遇到过因为输入输出慢而A不了的,但可以使用java的StreamTokenizer和Pr......
  • odoo 为可编辑列表视图字段搜索添加查询过滤条件
    实践环境Odoo14.0-20221212(CommunityEdition)需求描述如下图,列表网仓记录详情页面(form视图),编辑内联视图中的货主记录,为货主和仓库字段搜索,添加过滤条件,具体如下:......
  • Odoo 通过Javascript调用模型中自定义方法
    实践环境Odoo14.0-20221212(CommunityEdition)代码实现在js脚本函数中调用模型中自定义方法:this._rpc({model:'demo.wizard',//模型名称,即模型类定义中_na......
  • JavaScript回调函数
    回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码。在JavaScript中函数也是对象的一种,同样对象可以作为参数传......
  • odoo 为form表单视图添加chatter功能
    实践环境Odoo14.0-20221212(CommunityEdition)需求描述如图,给表单新增一个类似聊天的窗口,当记录一些表单活动(本例为自动记录当前记录状态变化)需求实现模型定义......
  • DVWA靶场实战(十四)——JavaScript
    DVWA靶场实战(十四)五、JavaScript:1.漏洞原理:这里的JavaScript其实是JavaScriptAttack也就是JS攻击。JavaScript是一种基于对象和事件驱动的、并具有安全性能的脚本......
  • JavaScript知识汇总
    1JavaScript功能直接写入HTML输出流(在HTML输出中使用document.write,如在文档加载后使用该方法会覆盖整个文档)对事件进行响应(如鼠标事件、键盘事件等)改变HTML内......
  • C# winform窗体(cs文件) .Designer.cs、.resx 文件分离出来 同级问题(转)
    改csproj文件就可以了, 用记事本打开csproj文件。 <CompileInclude="测试界面\FrmDayTimer.designer.cs"/>改为: <CompileInclude="测试界面\FrmDayTimer.designe......
  • 【JavaScript】17_debug,立即执行函数 与 严格模式
    14、debug<script>//debugger//在代码中打了一个断点console.log(a)//2vara=1console.log(a)//1fu......