【发布时间】:2017-02-06 10:38:59
【问题描述】:
我想修改 Odoo 8 中的一段 JS 代码(模块point_of_sale)。原代码是这样的:
function openerp_pos_models(instance, module){
...
module.Order = Backbone.Model.extend({
...
addPaymentline: function(cashregister) {
var paymentLines = this.get('paymentLines');
var newPaymentline = new module.Paymentline({},{cashregister:cashregister, pos:this.pos});
if(cashregister.journal.type !== 'cash'){
newPaymentline.set_amount( Math.max(this.getDueLeft(),0) );
}
paymentLines.add(newPaymentline);
this.selectPaymentline(newPaymentline);
},
});
}
我修改了该代码的一些行,并且更改按我的意愿工作(我只删除了if (cashregister.journal.type !== 'cash') 行)。问题是现在,我想从我制作的模块中以正确的方式修改这段代码。
为此,我添加了一个 JavaScript 文件,该文件从以下 XML 文件中调用(最后一个包含在我的 __openerp__.py data 参数中):
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="assets_backend" name="nmx_pos_ext assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/nmx_pos_ext/static/src/js/nmx_pos_ext.js"></script>
</xpath>
</template>
</data>
</openerp>
而JS文件的内容是:
openerp.nmx_pos_ext = function(instance) {
var _t = instance.web._t;
instance.point_of_sale.Order.include({
addPaymentline: function(cashregister) {
var paymentLines = this.get('paymentLines');
var newPaymentline = new module.Paymentline({},{cashregister:cashregister, pos:this.pos});
newPaymentline.set_amount( Math.max(this.getDueLeft(),0) );
paymentLines.add(newPaymentline);
this.selectPaymentline(newPaymentline);
},
});
}
我更新了模块并且没有应用更改,我收到一个错误,因为 include 似乎在 Backbone 模型中不存在。我尝试使用set 而不是include,但我得到了同样的错误:
instance.point_of_sale.Order.set 不是函数
有人可以帮我吗?
【问题讨论】:
标签: javascript xml backbone.js odoo-8 odoo