You need to enable JavaScript to run this app. Odoo 13 能否基于状态控制表单视图中Notebook页面的显隐?
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 13 能否基于状态控制表单视图中Notebook页面的显隐?

需求实现可行性说明

你提出的notebook页面按业务状态自动显隐的需求完全可以实现,属于Odoo表单视图的原生支持能力,不需要开发复杂的前端自定义逻辑。

核心实现原理

Odoo表单的所有视图元素(包括notebook下的页面节点)都支持绑定模型字段值做实时的显隐响应,只要你定义的4个业务状态是模型上持久存储的字段(一般为fields.Selection类型),就可以直接通过视图配置完成控制。

具体配置方法

找到你需要控制的notebook页面节点,根据你习惯的Odoo13兼容写法,添加对应的显隐规则即可,两种写法效果完全一致:

  1. 全版本兼容的attrs写法(稳定性最强,适配从Odoo 10到Odoo 13的所有版本)
    给page节点添加绑定规则,当状态字段值不属于状态1、状态2的范围时,自动隐藏当前页面:
    <page string="需控制显隐的业务页面"
          attrs="{'invisible': [('你的状态字段名', 'notin', ['状态1的存储值', '状态2的存储值'])]}">
        <!-- 页面原有的字段、布局内容 -->
    </page>
    
  2. Odoo13原生支持的简化表达式写法
    直接在page节点上添加invisible属性做表达式绑定,代码更简洁:
    <page string="需控制显隐的业务页面"
          invisible="你的状态字段名 not in ('状态1的存储值', '状态2的存储值')">
        <!-- 页面原有的字段、布局内容 -->
    </page>
    

交互效果与常见注意事项

  • 这种绑定是完全响应式的:不管状态值是通过点击向导按钮触发业务逻辑回写更新,还是用户手动在界面上切换状态,只要状态字段值发生变化,notebook页面的显隐会立刻自动更新,不需要额外写JS监听逻辑。
  • 如果你提到的交互是“点击向导按钮弹出弹窗完成操作后,再切换对应业务状态”,这个显隐逻辑会在向导关闭、主表单的状态字段值刷新时自动触发,不需要额外对接弹窗的关闭事件。
  • 配置时注意两个易踩坑点:
    • 绑定规则里填写的是状态字段的实际存储值(也就是Selection定义里元组的第一个元素,比如'draft'、'confirmed'这类),不要填前端展示的中文文本,否则会出现规则不生效的问题。
    • 显隐规则要配置在具体的<page>节点上,不要配置在最外层的<notebook>根节点上,否则会把整个notebook的所有页面都隐藏。

内容的提问来源于stack exchange,提问作者Leon Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 03:27:03