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

如何通过Odoo JS API获取当前视图模型(系统托盘组件场景)

获取Odoo当前视图对应模型的规范方法

嘿,这个场景我太熟悉了!在Odoo开发中,确实没必要去解析URL来获取当前模型——官方JS API提供了更规范、更可靠的方式,完全符合Odoo的架构逻辑。

核心思路:利用Odoo的action_manager服务

Odoo的界面状态由action_manager统一管理,它能直接提供当前活跃的视图控制器(Controller)或Action信息,从中就能轻松拿到对应的模型名称。

具体实现代码

你可以直接在on_click方法里调用action_manager服务的API,修改后的完整代码如下:

odoo.define('xx.systray', function (require) {
    "use strict";

    var config = require('web.config');
    var SystrayMenu = require('web.SystrayMenu');
    var Widget = require('web.Widget');
    var ajax = require('web.ajax');

    var xxMenu = Widget.extend({
        template:'solvo-support.helpMenu',
        events: {
            "click": "on_click",
        },
        on_click: function () {
            // 方式1:获取当前控制器,直接拿到模型名称(推荐)
            const currentController = this.call('action_manager', 'getCurrentController');
            if (currentController) {
                const currentModel = currentController.modelName;
                console.log('当前视图模型:', currentModel);
                
                // 你的业务逻辑:比如判断是否是报价单模型
                if (currentModel === 'sale.order') {
                    // 这里执行新建报价单相关的操作
                    console.log('用户当前在报价单视图');
                }
            } else {
                console.log('未加载任何活跃视图(比如在首页)');
            }

            // 方式2:获取当前Action,从Action定义中拿模型
            // const currentAction = this.call('action_manager', 'getCurrentAction');
            // if (currentAction) {
            //     const currentModel = currentAction.res_model;
            //     console.log('当前Action对应的模型:', currentModel);
            // }
        },
    });

    SystrayMenu.Items.push(xxMenu);
});

两种方法的区别

  • 方式1(获取Controller):直接拿到当前正在显示的视图控制器,modelName就是视图绑定的模型,准确性更高,推荐使用。
  • 方式2(获取Action):拿到的是当前执行的Action定义,res_model字段对应模型,适合需要Action其他信息(比如视图类型、参数)的场景。

为什么这比解析URL好?

  • 避免URL路由变化导致的解析错误(Odoo版本升级可能调整URL结构);
  • 完全遵循Odoo的官方API规范,代码更易维护;
  • 能处理更多边缘场景(比如首页、未加载视图的情况)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:41:32