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

Odoo14自定义视图类型报Cannot read property 'modelExtension' of undefined错误

问题原因

  1. JS代码里的严格模式声明语法错误:你写的是"use_strict",正确语法为"use strict",错误声明会导致JS逻辑执行异常。
  2. 自定义的Model类PersonalCalendarModel没有声明modelExtension属性,Odoo14的视图框架初始化自定义视图时,会强制读取Model类的该属性做参数校验,缺失就会抛出你遇到的Cannot read property 'modelExtension' of undefined报错。
  3. 你定义的视图config没有合并父类AbstractView的默认配置,可能会遗漏框架要求的基础参数。

修复方案

1. 替换JS代码

修正后的JS代码如下:

odoo.define("personal_calendar_view.PersonalCalendarView", function(require){
    "use strict";

    var AbstractController = require("web.AbstractController");
    var AbstractModel = require("web.AbstractModel");
    var AbstractRenderer = require("web.AbstractRenderer");
    var AbstractView = require("web.AbstractView");
    var ViewRegistry = require("web.view_registry");

    var PersonalCalendarController = AbstractController.extend({});
    var PersonalCalendarRenderer = AbstractRenderer.extend({});
    var PersonalCalendarModel = AbstractModel.extend({
        modelExtension: "PersonalCalendarModel"
    });

    var PersonalCalendarView = AbstractView.extend({
        display_name: "Personal Calendar",
        config: _.extend({}, AbstractView.prototype.config, {
            Model: PersonalCalendarModel,
            Controller: PersonalCalendarController,
            Renderer: PersonalCalendarRenderer,
        }),
        view_type: "personal_calendar",
    });

    ViewRegistry.add("personal_calendar", PersonalCalendarView);

    return PersonalCalendarView;
});

2. 生效验证

升级自定义模块,清空浏览器缓存和Odoo服务端静态资源缓存后重新访问视图即可。如果后续出现渲染空白问题,可先给PersonalCalendarRenderer添加基础的start方法输出测试内容,确认视图链路通了之后再开发自定义渲染逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:48:03