我正在尝试在Web客户端上自定义基本的Field对象。这是我的代码:

openerp.web_mymodule = function(openerp) {

    openerp.web.form.Field = openerp.web.form.Field.extend({
        init: function(view, node) {
            console.log('mine');
            this._super(view, node);
        }
    });
    [...]

}


但不起作用。 AFAIK这应该工作以及以下代码(在同一文件中)正在工作:

[...]
openerp.web.form.FieldChar = openerp.web.form.FieldChar.extend({

    init: function (view, node) {
        this._super(view, node);
        console.log('mine')
    }

});


我可以看到的唯一区别是,所有小部件(包括FieldChar)都在view_form.js中注册,而Field不是。

我是否在此背后缺少一些“黑魔法”? n

最佳答案

您是否尝试使用include而不是extend?

openerp.web_mymodule = function(openerp) {

    openerp.web.form.Field.include({
        init: function(view, node) {
            console.log('mine');
            this._super(view, node);
        }
    });
    [...]
}


xmo在这里写了一个解释:openerp web client 6.1: how to override base javascript functions

10-01 06:01
查看更多