как расширить базовый виджет поля в веб-клиенте

Я пытаюсь настроить базовый объект 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);
        }
    });
    [...]

}

но не работает. Насколько я знаю, это должно работать так же, как работает следующий код (в том же файле):

[...]
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 — нет.

Не упускаю ли я за этим какую-то «черную магию»? спасибо


person simahawk    schedule 14.08.2012    source источник


Ответы (1)


Вы пытались использовать 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 6.1 : как переопределить базовые функции JavaScript

person Guewen Baconnier    schedule 14.08.2012
comment
Я просто пытался сделать то же самое, и это действительно работает :) Я только что перечитал ответ xmo мне (!!), но все же я нахожу это немного странным, так как действие на «реальные экземпляры» объекта Field, такого как FieldChar и тому подобное, работает: S В любом случае спасибо! :) - person simahawk; 14.08.2012