在odoo股票中覆盖小部件

时间:2017-04-06 08:46:26

标签: javascript openerp odoo-8 qweb

在库存模块中,条形码扫描器页面由widget.js和picking.xml通过qweb处理。

我需要覆盖行为才能添加功能。到目前为止,我已经能够覆盖xml:

<templates id="template" xml:space="preserve">
 <t t-extend="PickingEditorWidget">
     <t t-jquery="#js_packconf_select" t-operation="after">
         <p>Hello World!</p>
     </t>
 </t>
</templates>

但关于js部分我被卡住了。 我需要覆盖PickingEditorWidget中的一些函数的行为,但是在widget.js中它首先包含在对象openerp.stock中,然后整个openerp.stock被一个函数覆盖:

openerp.stock = function(openerp) {
  openerp.stock = openerp.stock || {};
  openerp_picking_widgets(openerp);
}

我已经在每个模块中看到过这种代码,然后,我怎么能改变这个函数的工作方式而不必用我的小改动重写整个stock / widget.js?

this.$('.js_pack_configure').click(function(){
  ....
})

我不是JS专家,我无法理解......

编辑:

我在我的模块中显示了依赖的库存模块,现在我看到PickingEditorWidget对象,但我仍然无法使其工作我的更改

我的代码(widget.js)是:

function openerp_picking_widgets_extended(instance){

var module = instance.mrp_extended;

module.PickingEditorWidgetExtended = instance.stock.PickingEditorWidget.include({
    renderElement: function(){
        this.$('.js_pack_configure').click(function(){
            <my code>
        });
        this.$('.js_validate_pack').click(function(){
            <my code>
        });
        this._super();
    },
});

}

openerp.mrp_extended = function(openerp) {
  openerp.mrp_extended = openerp.mrp_extended || {};
  openerp_picking_widgets_extended(openerp);
}

1 个答案:

答案 0 :(得分:0)

我以这种方式修改了我的代码:

....
module.PickingEditorWidgetExtended = instance.stock.PickingEditorWidget.include({
    renderElement: function(){
        this._super();
....