Odoo12ce objet this 在 setinterval 函数中无法识别

问题描述

我使用 odoo12ce 并且在编写新小部件时遇到了一些问题

我的新小部件显示一些数据,3 秒后它应该消失

    start: function () {
      var texto = ""
      texto += "<ul>"
      this.valor.forEach(element => {
        texto += "<li>" + element.cant + ' ' + element.type + "</li>"
      });
      texto  += "</ul>"
      this.$el.append(texto);

      setTimeout( function(){ 
        this.$el.empty();
       },3000);
    },

我收到错误无法读取未定义的属性“空”

函数外部,对象工作正常,但在内部无法识别。我能做些什么来解决它? 提前致谢

解决方法

您只需要将 this 添加到 setTimeout 的上下文中。所以您的代码将类似于以下内容:

start: function () {
    var self = this;
    var texto = ""
    texto += "<ul>"
    this.valor.forEach(element => {
        texto += "<li>" + element.cant + ' ' + element.type + "</li>"
    });
    texto  += "</ul>"
    this.$el.append(texto);

    setTimeout( function(){ 
       self.$el.empty();
    },3000);
},

不要犹豫,让我们知道它是否有效。