1

我正在尝试自定义 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.jsField没有注册。

我是否错过了这背后的一些“黑魔法”?tnx

4

1 回答 1

2

您是否尝试使用包含而不是扩展?

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

于 2012-08-14T13:28:04.620 回答