如何在Odoo14树形视图中点击任意记录时弹出弹窗
在Odoo14树形视图实现点击记录弹窗功能
1. 准备自定义模块(无则新建)
先确认你有一个具备基础结构的自定义模块,目录至少包含 __manifest__.py、models/、views/,没有的话先按Odoo模块规范创建。
2. 编写JS扩展逻辑
在模块下创建 static/src/js/tree_view.js 文件,重写树形视图的行点击事件:
odoo.define('你的模块名.tree_view_extend', function(require) { "use strict"; var ListController = require('web.ListController'); var ListView = require('web.ListView'); var viewRegistry = require('web.view_registry'); // 继承原控制器,修改行点击行为 var CustomListController = ListController.extend({ _onRowClicked: function (ev) { // 保留原有的选中逻辑(可选,不需要可删除) this._super.apply(this, arguments); // 获取点击的记录数据 var record = ev.data.record; // 示例1:弹出简单提示弹窗 this.do_notify('提示', `点击了记录:ID-${record.data.id},名称-${record.data.display_name}`); // 示例2:弹出表单视图弹窗(如需复杂内容用这个) /* this.do_action({ type: 'ir.actions.act_window', res_model: record.model, res_id: record.data.id, views: [[false, 'form']], target: 'new', title: '记录详情', }); */ }, }); // 绑定自定义控制器到树形视图 var CustomListView = ListView.extend({ config: _.extend({}, ListView.prototype.config, { Controller: CustomListController, }), }); // 注册自定义视图类型 viewRegistry.add('custom_tree_view', CustomListView); return { CustomListController: CustomListController, CustomListView: CustomListView, }; });
3. 注册JS资源
在模块的 __manifest__.py 中添加JS文件路径,让Odoo加载它:
{ 'name': '树形视图弹窗扩展', 'version': '1.0', 'depends': ['base', 'web'], 'data': [ # 后续添加视图XML文件路径 ], 'assets': { 'web.assets_backend': [ '你的模块名/static/src/js/tree_view.js', ], }, 'installable': True, 'auto_install': False, }
4. 修改目标树形视图
找到你要修改的模型树形视图XML文件(比如 views/目标模型_view.xml),把视图类型指定为我们自定义的 custom_tree_view:
<record id="目标模型_tree_view" model="ir.ui.view"> <field name="name">目标模型.tree.view</field> <field name="model">你的目标模型名</field> <field name="arch" type="xml"> <tree string="目标模型列表" js_class="custom_tree_view"> <!-- 原树形视图的字段定义保留 --> <field name="name"/> <field name="其他字段"/> </tree> </field> </record>
5. 生效配置
重启Odoo服务,升级你的自定义模块,之后点击树形视图的任意记录就能触发弹窗了。
注意事项
- 把代码里的「你的模块名」「你的目标模型名」替换成实际名称
- 弹窗内容可以根据需求修改,比如调用自定义模板、加载其他视图等
内容的提问来源于stack exchange,提问作者WilliamVietnam
相关产品推荐
相关产品推荐

