【问题标题】:override widget in odoo stock覆盖odoo股票中的小部件
【发布时间】:2017-04-06 08:46:25
【问题描述】:

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

我需要重写该行为以添加功能。到目前为止,我已经能够覆盖 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 专家,我想不通...

编辑:

我在我的模块清单中放入了 stock 模块的依赖项,现在我看到了 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);
}

【问题讨论】:

    标签: javascript openerp odoo-8 qweb


    【解决方案1】:

    我这样修复了我的代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 2010-12-09
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      • 2019-08-22
      相关资源
      最近更新 更多