相关文章推荐
鬼畜的柚子  ·  枪械类破解版游戏大全(官方)最新下载IOS/ ...·  3 月前    · 
讲道义的牛肉面  ·  潢政食安委〔2020〕7号 ...·  3 月前    · 
玩篮球的小虾米  ·  苹果iPhone ...·  5 月前    · 
内向的花卷  ·  ABBA这是真的在改变行业_澎湃号·湃客_澎 ...·  5 月前    · 
拉风的猕猴桃  ·  互传 /互传使用方法/互传操作方法| vivo官网·  5 月前    · 
Code  ›  Java-forEach增强for循环是值传递规则详解开发者社区
string temp for循环 赋值
https://cloud.tencent.com/developer/article/1585121
坚韧的乌冬面
1 年前
授客

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

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
发布
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
授客
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
社区首页 > 专栏 > odoo 通过Javascript显示或隐藏form自带按钮

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

作者头像
授客
发布 于 2023-05-24 09:38:41
发布 于 2023-05-24 09:38:41
2.2K 0 0
代码可运行
举报
文章被收录于专栏: 授客的专栏 授客的专栏
运行总次数: 0
代码可运行

实践环境

Odoo 14.0-20221212 (Community Edition)

需求描述

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

代码实现

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

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

代码语言: javascript
代码 运行次数: 0
运行
复制
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

代码语言: javascript
代码 运行次数: 0
运行
复制
<?xml version="1.0" encoding="utf-8"?>
 
推荐文章
鬼畜的柚子  ·  枪械类破解版游戏大全(官方)最新下载IOS/安卓版/官方网站/app下载
3 月前
讲道义的牛肉面  ·  潢政食安委〔2020〕7号 潢川县人民政府食品安全委员会关于印发2020年潢川县食品安全工作要点的通知_其他文件_潢川县人民政府
3 月前
玩篮球的小虾米  ·  苹果iPhone 14手电筒按键灰了无法使用怎么办?
5 月前
内向的花卷  ·  ABBA这是真的在改变行业_澎湃号·湃客_澎湃新闻-The Paper
5 月前
拉风的猕猴桃  ·  互传 /互传使用方法/互传操作方法| vivo官网
5 月前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号