在 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');