我正在使用 Odoo 11遵循Building Interface Extensions 指南。
指南中指出,
在 Odoo web 中,模块被声明为在全局 odoo 变量上设置的函数。该函数的名称必须与插件(在本例中为 oepetstore)相同,以便框架可以找到它并自动初始化它。
但是我的模块没有被初始化,我收到以下错误:
操作错误 - 找不到客户端操作“petstore.homepage”。
我在模块中添加了一些日志记录,我发现浏览器正在获取文件,正如预期的那样,但初始化没有发生。
这是我的 JS 文件:
odoo.oepetstore = function(instance, local) {
console.log('Started odoo.oepetstore'); ////////// [1] - This never runs
local.HomePage = instance.Widget.extend({
template: 'HomePageTemplate',
start: function() {
this.$el.append($('<div>').text('Hello dear Odoo user!'));
}
});
instance.web.client_actions.add('petstore.homepage', 'instance.oepetstore.HomePage');
}
console.log('Loaded petstore.js'); ////////// [2] - This always runs
使用 Odoo 9(在将文件重命名__manifest__.py为__openerp__.py并将变量重命名odoo为之后openerp),一切都按预期工作。
为什么它不能与 Odoo 11 一起使用?
编辑
这是我遵循Tchi-Odoo 的回答后的工作代码:
odoo.define('PetStoreHomePage', function(require){
"use strict";
var core = require('web.core');
var Widget = require('web.Widget');
var HomePageWidget = Widget.extend({
template: 'HomePageTemplate',
start: function() {
this.$el.append($('<div>').text('Hello dear Odoo user!'));
}
});
core.action_registry.add('petstore.homepage', HomePageWidget);
});