Odoo 14前端JS如何获取当前记录ID?
获取Odoo表单保存后的记录ID
直接点击保存按钮是异步操作,而且this指向的是按钮DOM元素,自然拿不到记录ID。可以通过以下两种可靠方式获取:
方法一:监听表单保存完成事件(推荐)
利用Odoo表单控制器内置的saved事件,确保在保存完成后再获取ID:
// 获取表单控制器实例 const formController = $(".o_form_controller").data('web.FormController'); // 监听保存完成事件 formController.on('saved', null, () => { // 从模型中获取当前记录ID const record = formController.model.get(formController.handle); const recordId = record.res_id; console.log('当前记录ID:', recordId); }); // 触发保存操作 $(".o_form_button_save").click();
方法二:延迟获取(不推荐,仅作备选)
如果临时需要快速测试,可以在点击保存后延迟执行获取逻辑,但这种方式依赖网络速度,稳定性差:
$(".o_form_button_save").click(); // 等待保存完成后获取ID,时间按需调整 setTimeout(() => { const formController = $(".o_form_controller").data('web.FormController'); const recordId = formController.model.get(formController.handle).res_id; console.log('当前记录ID:', recordId); }, 1500);
关键说明
Odoo的表单数据存在前端模型中,而非按钮元素里,所以不能通过按钮的this获取ID,必须从表单控制器关联的模型实例中读取res_id字段。
内容的提问来源于stack exchange,提问作者user19986231
相关产品推荐
相关产品推荐

