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

Odoo 16中继承网站模板后如何绑定JavaScript点击事件?

解决Odoo门户项目页面自定义点击事件绑定问题
  • 问题根源:你写的ImageViewer组件并未被Odoo门户项目页面加载,该页面实际使用的是Odoo内置的PortalProject组件,无法直接通过自定义组件关联模板事件。

  • 正确解决方案:通过patch方法扩展内置的PortalProject组件,添加你的点击处理方法:

import { patch } from '@web/core/utils/patch';
import { PortalProject } from '@project/portal/project_portal';

// 扩展PortalProject组件,添加点击处理方法
patch(PortalProject.prototype, 'test.portal_project_inherit_patch', {
    _onClickTest() {
        console.log("test");
        throw new Error("TEEEEEEEEST");
    },
});
  • 模板部分无需修改,你的继承写法是正确的:
<template id="portal_project_inherit" name="portal_project_inherit" inherit_id="project.portal_my_project">
    <xpath expr="t" position="inside">
        <div class="o_portal_project_custom_block mt-3" >
            <div t-on-click.stop="() => this._onClickTest()"><p>TEST</p></div>
        </div>
    </xpath>
</template>
  • 额外注意:要确保你的JS文件在模块的__manifest__.py中正确引入到门户资产组:
'assets': {
    'web.portal_assets': [
        '你的模块名/static/src/js/portal_project_patch.js',
    ],
},

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:07:07