Odoo14 OWL重写Chatter组件/进入视图自动触发点击功能咨询
Odoo Chatter 附件框默认打开实现方案
方案1:自动触发点击事件实现
- 实现逻辑:通过继承Chatter组件的mounted生命周期钩子,在组件加载完成后自动调用原有的附件点击事件,无需用户手动触发。
- 代码实现:
/** @odoo-module **/ import { Chatter } from "@mail/components/chatter/chatter"; import { patch } from "@web/core/utils/patch"; patch(Chatter.prototype, "your_module_name.ChatterPatch", { async mounted() { super.mounted(...arguments); // 仅当附件框未打开时触发点击逻辑 if (!this.chatter.isAttachmentBoxVisible) { this._onClickAttachments(); } } });
- 适用场景:逻辑简单改动量小,适合临时调整的需求。
方案2:初始化时直接设置可见状态
- 实现逻辑:重写Chatter组件的setup初始化方法,在状态创建时直接将附件框可见性设为true,从根源修改默认值。
- 代码实现:
/** @odoo-module **/ import { Chatter } from "@mail/components/chatter/chatter"; import { patch } from "@web/core/utils/patch"; patch(Chatter.prototype, "your_module_name.ChatterPatch", { setup() { super.setup(...arguments); // 初始化时直接修改附件框可见状态 this.chatter.update({ isAttachmentBoxVisible: true }); } });
- 优势:无需触发额外点击事件,不会出现页面加载后附件框再弹出的闪烁问题,性能和体验更优,更推荐使用该方案。
提示:两种方案实现后都需要将自定义JS文件添加到对应Odoo模块的
web.assets_backend资源列表中,升级模块后即可生效。
内容的提问来源于stack exchange,提问作者DFX Nguyễn
相关产品推荐
相关产品推荐

