You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 15中继承Chatter的onClickSendMessage函数失效求助

解决Odoo 15 Chatter onClickSendMessage函数未被调用的问题

核心问题:混淆了Chatter的Model层与Component层

你贴的源码链接指向的是Chatter Model(邮件模块的业务逻辑层),但你的代码却在patchChatter Component(UI组件层),这两个是完全不同的对象,所以自定义方法根本不会被触发。

修复步骤及代码示例

  1. 修正导入路径,定位到Chatter Model
    把组件导入改成Model导入,这是关键。

  2. 修正patch代码逻辑
    注意clear()函数未定义,这里改成Odoo标准的null来清空;如果需要保留原方法逻辑,可以调用this._super(...arguments)。

  3. 确保模块配置正确
    在自定义模块的__manifest__.py中声明JS文件,并依赖mail模块,保证加载顺序正确。

正确的JS补丁代码

/** @odoo-module **/

import { patch } from 'web.utils';
import { Chatter } from '@mail/models/chatter/chatter'; // 导入Chatter Model而非Component

patch(Chatter.prototype, 'my_custom_module/static/src/js/chatter_patch.js', {
    onClickSendMessage(ev) {
        if (this.composerView && !this.composerView.composer.isLog) {
            this.update({ composerView: null }); // 替换未定义的clear()
        } else {
            this._super(...arguments); // 调用原方法逻辑,可根据需求调整
        }
    }
});

模块manifest配置示例

在__manifest__.py中添加以下内容:

{
    'name': 'My Custom Chatter Module',
    'version': '1.0',
    'depends': ['mail'],
    'assets': {
        'web.assets_backend': [
            'my_custom_module/static/src/js/chatter_patch.js',
        ],
    },
    'installable': True,
    'auto_install': False,
}

最后验证步骤

  • 安装并激活自定义模块
  • 清除浏览器缓存(Ctrl+Shift+R),或在Odoo开发者模式下点击「清除缓存」
  • 打开包含Chatter的页面测试点击发送按钮,检查自定义逻辑是否生效

内容的提问来源于stack exchange,提问作者Ila Yadav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:25:07