2017-04-06 95 views
0

有貨模塊的條碼掃描器頁面由widget.js和picking.xml通過qweb處理。覆蓋widget的odoo股票

我需要覆蓋的行爲,以添加功能。到目前爲止,我已經能夠覆蓋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專家,我無法弄清楚......

編輯:

我把我的模塊的清單中dependances股票模塊,現在我看到了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); 
} 

回答

0

我以這種方式修復了我的代碼:

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