“ this”在点击事件处理程序中不起作用

我已经将一个单击事件处理程序附加到我的ChartJS派生的组件上,如下所示:

export default {
  extends: HorizontalBar,
  data() {
    return {
      my_data: [],
      options: {
        onClick: function(event, args) {
           //need to access my_data here
        }
      },
    };
  },
}

我需要访问data处理程序中的成员之一不幸的是,this.my_data在这里不起作用。ChartJS文档告诉我,此事件是在Chart组件而不是Vue组件的上下文中调用的。如何获得访问权限my_data

更新

所以我现在使用@Dan的定义处理程序的方式:

export default {
  extends: HorizontalBar,
  data() {
    return {
      my_data: [],
      options: {
        onClick: this.ClickHandler,
      },
    };
  },

  methods: {
    ClickHandler: function(event, args) {
      var datapoint = this.getElementAtEvent(event);
      var value = this.my_data[datapoint._datasetIndex];
    },
  }
}

该处理程序已正确调用,但是this现在引用了我的Vue组件,因此我没有任何引用Chart上下文来调用它getElementAtEvent

因此,如果我在onClick上面的前面声明了它,则会获得Chart上下文this,但不再有权访问my_data如果我使用您的方式,则会得到this.my_data,但会丢失Chart上下文。

您需要将处理程序放入methods对象中,然后从图表options处理程序中引用它

data() {
  return {
    my_data: [],
    options: {
      onClick: this.ClickHandler,
    }
  };
},
methods: {
  ClickHandler: function(event, points) {
    // Here is how to access the chart
    const c = this._data._chart;
    const datapoint = c.getElementAtEvent(event)[0];
    const indexBar = datapoint._index;
    const indexSegment = datapoint._datasetIndex;
    // Do whatever with this.my_data, indexBar, and indexSegment
  }
}

该图表可通过组件访问this._data._chart

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

点击处理程序在模板扩展指令中不起作用

来自分类Dev

Webgrid中的单击事件处理程序不起作用

来自分类Dev

Firebase $ save在事件处理程序函数中不起作用

来自分类Dev

Up函数在元素的事件处理程序中不起作用

来自分类Dev

setState 在事件处理程序中不起作用

来自分类Dev

$(this) 在定义的点击事件中不起作用

来自分类Dev

OnChange事件处理程序不起作用

来自分类Dev

Opencart事件处理程序不起作用

来自分类Dev

Javascript事件处理程序不起作用

来自分类Dev

JavaScript事件处理程序不起作用

来自分类Dev

Opencart事件处理程序不起作用

来自分类Dev

onclick事件处理程序不起作用

来自分类Dev

点击事件在Chrome扩展程序的“后台”页面中不起作用

来自分类Dev

点击事件在Chrome扩展程序选项页面中不起作用

来自分类Dev

点击事件点击不起作用

来自分类Dev

使用点击处理程序(JS)隐藏和显示div在Firefox中不起作用

来自分类Dev

调用输入的点击事件在Safari中不起作用

来自分类Dev

标记点击事件在移动设备中不起作用

来自分类Dev

事件点击jquery在骨干.js中不起作用

来自分类Dev

按名称的点击事件在jQuery中不起作用

来自分类Dev

为什么点击事件在图例中不起作用?

来自分类Dev

简单的点击事件在 JS 中不起作用

来自分类Dev

类更改后,单击事件处理程序不起作用

来自分类Dev

声明多个事件处理程序不起作用

来自分类Dev

Bootstrap Switch事件处理程序不起作用

来自分类Dev

C#关闭事件处理程序不起作用

来自分类Dev

JavaScript按钮事件处理程序不起作用

来自分类Dev

C#关闭事件处理程序不起作用

来自分类Dev

使用jQuery添加事件处理程序不起作用

Related 相关文章

热门标签

归档