在库存模块中,条形码扫描器页面由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);
}
答案 0 :(得分:0)
我以这种方式修改了我的代码:
....
module.PickingEditorWidgetExtended = instance.stock.PickingEditorWidget.include({
renderElement: function(){
this._super();
....