antvis/G2

【V5】如何在上层拿到所有的 elements #5217

BinghuiXie posted onGitHub

<!-- Thank you for reporting an issue. 1. It's RECOMMENDED to submit PR for typo or tiny bug fix. 2. If this's a FEATURE request, please provide: details, pseudo codes if necessary. 3. If this's a BUG, please provide: course repetition, error log and configuration. Fill in as much of the template below as you're able. 4. It will be nice to use to provide a CodePen Link which can reproduce the issue, we provide a CodePen template g2-github-issue. 感谢您向我们反馈问题。 1. 提交问题前,请先阅读 README 中的贡献帮助文档。 2. 我们推荐如果是小问题(错别字修改,小的 bug fix)直接提交 PR。 3. 如果是一个新需求,请提供:详细需求描述,最好是有伪代码实现。 4. 如果是一个 BUG,请提供:复现步骤,错误日志以及相关配置,并尽量填写下面的模板中的条目。 5. 如果可以,请提供尽可能精简的 CodePen 链接,可使用 CodePen 模板 https://codepen.io/leungwensen/pen/WXJgox,方便我们排查问题。 6. 扩展阅读:如何向开源项目提交无法解答的问题 -->

  • G2 Version:
  • Platform:
  • Mini Showcase(like screenshots):
  • CodePen Link:

<!-- Enter your issue details below this comment. -->

V5 版本的 G2 底层采用 Selection 相关的 API 来选中节点,例如

selectAll(`.${ELEMENT_CLASS_NAME}`)

包括也实现了 selectG2Elements 方法用于获取所有的 Elements。 但目前在 index.ts 中,没有导出 Selection 或者 utils 里面的方法函数

// index.ts
import { runtime } from '@antv/g';

runtime.enableCSSParsing = false;

export {
  render,
  renderToMountedElement,
  MAIN_LAYER_CLASS_NAME,
  LABEL_LAYER_CLASS_NAME,
  ELEMENT_CLASS_NAME,
  VIEW_CLASS_NAME,
  PLOT_CLASS_NAME,
  COMPONENT_CLASS_NAME,
  LABEL_CLASS_NAME,
  AREA_CLASS_NAME,
} from './runtime';

export type { G2Context } from './runtime';

export { createLibrary } from './stdlib';

export { Chart, MarkNode, CompositionNode, register } from './api';

export { ChartEvent } from './utils/event';

export * from './spec';

所以如何在 G2 上层获取到所有的 Elements 呢 (目前想基于 G2 的 V5 版本做上层封装,但 V5 的很多工具方法没有暴露出来无法使用)


const { canvas } = chart.getContext();

// 找到图形元素
const elements = canvas.document.getElementsByClassName(ELEMENT_CLASS_NAME);
posted by BinghuiXie almost 2 years ago

Fund this Issue

$0.00
Funded

Pull requests