重写Odoo中的JavaScript函数

重写Odoo中的JavaScript函数,javascript,odoo,Javascript,Odoo,我遇到了重写javascript函数的问题。我正在使用Odoo POS,我想覆盖POS JavaScript函数之一 在Odoo销售点->models.js中,有一个名为按批次设置数量的函数。但它写的是扩展主干.Collection。我可以扩展属于主干.Model的函数,但不能扩展主干.Collection中的函数 这是一个函数的代码。(我想扩展按批次设置数量功能): 谢谢,如果您检查该模块的return语句,则该类是模块'point\u of\u sale.models'中的一个私有变量 Ex

我遇到了重写javascript函数的问题。我正在使用Odoo POS,我想覆盖POS JavaScript函数之一

在Odoo销售点->models.js中,有一个名为按批次设置数量的函数。但它写的是扩展主干.Collection。我可以扩展属于主干.Model的函数,但不能扩展主干.Collection中的函数

这是一个函数的代码。(我想扩展按批次设置数量功能):


谢谢,

如果您检查该模块的return语句,则该类是模块
'point\u of\u sale.models'
中的一个私有变量

Export
仅包含您可以覆盖其中一个方法的此类:

 exports = {
     PosModel: PosModel,
     NumpadState: NumpadState,
     load_fields: load_fields,
     load_models: load_models,
     Orderline: Orderline,
     Order: Order,
 };
这意味着您无法覆盖或访问它。您需要做的是定义一个新类
PacklotlineCollection
与原始模块中一样,更改方法的代码,覆盖使用该方法的唯一方法,即
订单行
类的集合(产品)批次,该类由
销售点.模型
模块返回

odoo.define('techinca\u name.models',函数(需要){
“严格使用”;
//访问类
var posModels=require('销售点.模型')
//如果有,代码中也使用了require any thing
//定义一个类似的类,稍作修改
var PacklotlineCollection=Backbone.Collection.extend({
//更改此部分
型号:posModels.Packlotline,
初始化:功能(模型、选项){
this.order\u line=options.order\u line;
},
获取\u空\u模型:函数(){
返回this.findWhere({'lot_name':null});
},
删除\u空\u模型:函数(){
remove(this.where({'lot_name':null}));
},
获取有效批次:函数(){
返回此.filter(函数(模型){
返回模型。get('lot_name');
});
},
按批次设置数量:函数(){
//这部分呢
if(this.order\u line.product.tracking=='serial'){
var valid_lots=this.get_valid_lots();
此.订单行.设置数量(有效批次.长度);
}
}
});
//重写set_product_lot以使用您的类而不是原始类
posModels.Orderline.inculde({
//相同的代码唯一的区别是它将使用您自己的类
设置产品批次:功能(产品){
this.has_product_lot=product.tracking!='none'&&this.pos.config.use_现有_lots;
this.pack\u lot\u line=this.has\u product\u lot&&new PacklotlineCollection(null,{'order\u line':this});
},
});
});

注意:若要覆盖类的方法,请使用
类名。包括
扩展
只需创建一个继承此
类名的新类

谢谢您的回答。一切似乎都很好。唯一的问题是我不能使用
posModels.Orderline.inculde({})
。然后我尝试了
扩展
,我成功了!!我会检查它是否有效,如果不行,我会编辑答案来解决这个问题,谢谢
 exports = {
     PosModel: PosModel,
     NumpadState: NumpadState,
     load_fields: load_fields,
     load_models: load_models,
     Orderline: Orderline,
     Order: Order,
 };