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
相关产品推荐
相关产品推荐

