【问题标题】:Reference prop from callback来自回调的参考道具
【发布时间】:2019-08-06 13:35:57
【问题描述】:

我试图在 vue-chartjs 的回调中引用 vue 道具,但它无法解决“this”,并且在控制台日志中出现“未定义”错误。引用 props 的正确方法是什么?

props: {
  test: {
    type: String,
    required: true,
  },
}
data: () => ({
  chartOptions: {
    tooltips: {
      callbacks: {
        label: function(tooltipItem, data) {
            console.log(this.test);
            return '';
        }
      }
    }
  }
});

【问题讨论】:

    标签: javascript vue.js vuejs2 vue-component vue-chartjs


    【解决方案1】:

    如果你想在你的data 中使用this,你必须使用普通函数,这样this 关键字才能正确绑定到 Vue 实例..

    
    export default {
        props: {
            test: {
                type: String,
                required: true,
            },
        },
        data() {
            const vm = this
            return {
                chartOptions: {
                    tooltips: {
                        callbacks: {
                            label: function(tooltipItem, data) {
                                console.log(vm.test);
                                return '';
                            }
                        }
                    }
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      尝试使用箭头函数并将chartOptions 定义为计算属性:

      computed:{
        chartOptions(){
          return {
            tooltips: {
               callbacks: {
              label: (tooltipItem, data)=> {
                  console.log(this.test);
                  return '';
              }
            }
          }
        }
      }
      
      }
      

      【讨论】:

      • 对不起,这没有什么区别
      • 您可以将callback 保留为空对象并在挂载的挂钩中更新callback.label
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 2018-09-03
      相关资源
      最近更新 更多