在 odoo 14 的文本字段中渲染模板
Render a template in a onchage of text field in odoo 14
我正在尝试在输入字段的 onchange 中呈现模板。
这里是onchange方法。
*.js
_onClickBasketInputChange: function(){
console.log('inside input change',this.basketVerificationId);
var self = this;
var barcode = $('.basket_barcode_input').val();
console.log('barcode',barcode);
// var rec = this._rpc({
return this._rpc({
model: 'mobile.basket.verification',
method: 'get_picking_details',
args: [this.basketVerificationId,barcode],
}).then(function(res){
// console.log('this',self);
console.log('picking_id',res);
var $body = this.$el.filter('.o_barcode_lines');// Here i am getting the error ' Uncaught (in promise) TypeError: this is undefined'
console.log('body',$body);
if (res['status'] == true){
console.log('successs');
var $lines = $(Qweb.render('basketVerificationLines', {
picking:res['picking_id'],
customer:res['partner_id'],
lines:res['line_ids']
}));
$body.prepend($lines);
}
// $('.basket_barcode_input').val('');
var message = res['result'];
if (res['status'] == false){
Dialog.alert(self, message);
}
});
},
但我收到以下错误
未捕获(承诺)TypeError:这是未定义的
更新:
当this
改为self
时,$body
的值为
body
Object { length: 0, prevObject: {…} }
长度:0
的
prevObject: 对象 { 0: div.o_action, 长度: 1 }
的
而且模板不会添加到正文中。
请帮忙解决这个问题。
我得到了解决方案,
我将 .filter
替换为 .find
然后它起作用了。
var $body = self.$el.find('.o_barcode_lines');
我正在尝试在输入字段的 onchange 中呈现模板。
这里是onchange方法。
*.js
_onClickBasketInputChange: function(){
console.log('inside input change',this.basketVerificationId);
var self = this;
var barcode = $('.basket_barcode_input').val();
console.log('barcode',barcode);
// var rec = this._rpc({
return this._rpc({
model: 'mobile.basket.verification',
method: 'get_picking_details',
args: [this.basketVerificationId,barcode],
}).then(function(res){
// console.log('this',self);
console.log('picking_id',res);
var $body = this.$el.filter('.o_barcode_lines');// Here i am getting the error ' Uncaught (in promise) TypeError: this is undefined'
console.log('body',$body);
if (res['status'] == true){
console.log('successs');
var $lines = $(Qweb.render('basketVerificationLines', {
picking:res['picking_id'],
customer:res['partner_id'],
lines:res['line_ids']
}));
$body.prepend($lines);
}
// $('.basket_barcode_input').val('');
var message = res['result'];
if (res['status'] == false){
Dialog.alert(self, message);
}
});
},
但我收到以下错误 未捕获(承诺)TypeError:这是未定义的
更新:
当this
改为self
时,$body
的值为
body
Object { length: 0, prevObject: {…} }
长度:0 的 prevObject: 对象 { 0: div.o_action, 长度: 1 } 的 而且模板不会添加到正文中。
请帮忙解决这个问题。
我得到了解决方案,
我将 .filter
替换为 .find
然后它起作用了。
var $body = self.$el.find('.o_barcode_lines');