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

Odoo 14如何重定义OWL js 及重写board_view.js的_saveDashboard方法

Odoo14社区版重写board模块_saveDashboard函数操作步骤

1. 准备自定义模块基础

首先创建自定义Odoo模块,在模块的__manifest__.py中声明依赖board模块,确保自定义资源加载顺序晚于原生board模块:

# __manifest__.py 片段
'depends': ['base', 'board'],

2. 注册静态资源

在自定义模块下新建static/src/js/custom_board_view.js文件,同时新建views/assets.xml文件,将自定义JS注入后端资源包:

<!-- views/assets.xml 内容 -->
<odoo>
    <template id="custom_board_assets" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <script type="text/javascript" src="/你的模块名/static/src/js/custom_board_view.js"/>
        </xpath>
    </template>
</odoo>

同时在__manifest__.py的data列表中引入views/assets.xml。

3. 编写重写逻辑

Odoo14使用include方法即可对原生组件的方法进行重写,不需要完全替换组件,custom_board_view.js代码示例如下:

odoo.define('你的模块名.CustomBoardView', function (require) {
    "use strict";
    // 引入原生board视图组件
    const BoardView = require('board.BoardView');
    const BoardController = BoardView.prototype.config.Controller;

    BoardController.include({
        _saveDashboard: function () {
            // 若需要保留原有逻辑,保留本行,不需要则删除
            this._super.apply(this, arguments);

            // 此处编写你的自定义逻辑
            console.log('自定义_saveDashboard方法执行');
            // 你的业务代码...
        }
    });
});

4. 生效验证

  • 升级你的自定义模块
  • 清空浏览器缓存和Odoo服务端静态资源缓存
  • 进入仪表盘页面触发保存操作,验证自定义逻辑是否正常执行

注意事项

  • 如果需要完全覆盖原生逻辑,删除this._super.apply(this, arguments)即可
  • 必须确保自定义模块依赖board,否则会出现组件未定义的报错
  • 不要修改Odoo原生模块的代码,所有自定义逻辑都写在你自己的模块中

内容的提问来源于stack exchange,提问作者Shivam Kachhia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:21:02