Chart.js 的钩子(插件)的执行顺序是什么?

tot*_*ico 6 javascript chart.js

chartJS 插件的文档可以在这里找到,但是它不完整,因为没有对每个钩子的完整描述:

  • afterInit
  • beforeUpdate (cancellable)
  • afterUpdate
  • beforeLayout (cancellable)
  • afterLayout
  • beforeDatasetsUpdate (cancellable)
  • afterDatasetsUpdate
  • beforeDatasetUpdate (cancellable)
  • afterDatasetUpdate
  • beforeRender (cancellable)
  • afterRender
  • beforeDraw (cancellable)
  • afterDraw
  • beforeDatasetsDraw (cancellable)
  • afterDatasetsDraw
  • beforeDatasetDraw (cancellable)
  • afterDatasetDraw
  • beforeEvent (cancellable)
  • afterEvent
  • resize
  • destroy

这个列表可以总结为以下功能,但顺序对我来说不清楚:

  • 更新
  • 布局
  • 数据集更新
  • 数据集更新
  • 使成为
  • 数据集绘制
  • 数据集绘制
  • 事件
  • 调整大小
  • 破坏

一些名字可能知道钩子的执行顺序是什么。


用例

我想在图表上实现在数据的某些条件下激活的几种行为,例如,我想在没有可用数据时更新图例标签,因此,而不是在图例中显示类别的名称,它会显示一条消息,说没有数据

可以肯定的是,我已经设法实现了 plugins,但是由于我不清楚顺序,因此由于顺序,我总是把事情搞混。

tot*_*ico 10

我在代码中找到了每个钩子的内部文档(请参阅下面的美化版本)。不完全是顺序,但它可以帮助弄清楚

请注意,有些钩子具有相同的名称,但它们的参数不同(您可以直接在代码中检查它们:

  • beforeInit: 在初始化之前调用chart
  • afterInit: 在chart初始化之后和第一次更新之前调用。
  • beforeUpdate: 更新前调用chart。如果任何插件返回false,则更新将被取消(以及随后的渲染),直到update触发另一个。
  • afterUpdate: 在chart更新之后和渲染之前调用。请注意,如果之前已取消图表更新,则不会调用此挂钩。
  • beforeDatasetsUpdate: 在更新chart数据集之前调用。如果任何插件返回false,数据集更新将被取消,直到update触发另一个。@自 2.1.5 版起
  • afterDatasetsUpdate: 在chart数据集更新后调用。请注意,如果先前已取消数据集更新,则不会调用此挂钩。
  • beforeDatasetUpdate:chart在给定的更新数据集之前调用args.index。如果任何插件返回false,数据集更新将被取消,直到update触发另一个。
  • afterDatasetUpdate:chart在给定的数据集args.index更新后调用。请注意,如果先前已取消数据集更新,则不会调用此挂钩。
  • beforeLayout: 布局前调用chart。如果任何插件返回false,则布局更新将被取消,直到update触发另一个。
  • afterLayout: 在chart布局完成后调用。请注意,如果先前已取消布局更新,则不会调用此挂钩。
  • beforeRender: 在渲染之前调用chart。如果任何插件返回false,则渲染将被取消,直到render触发另一个。
  • afterRender:在chart完全渲染(和动画完成)后调用。请注意,如果先前已取消渲染,则不会调用此挂钩。
  • beforeDraw:chart在给定缓动值指定的每个动画帧绘制之前调用。如果有任何插件返回false,则取消帧绘制,直到render触发另一个。
  • afterDraw: 在chart为特定缓动值绘制之后调用。请注意,如果先前已取消绘图,则不会调用此挂钩。
  • beforeDatasetsDraw: 在绘制chart数据集之前调用。如果有任何插件返回false,则数据集绘制将被取消,直到render触发另一个。
  • afterDatasetsDraw: 在chart绘制数据集后调用。请注意,如果先前已取消数据集绘制,则不会调用此挂钩。
  • beforeDatasetDraw:chart在给定绘制数据集之前调用args.index(数据集以相反的顺序绘制)。如果有任何插件返回false,则数据集绘制将被取消,直到render触发另一个。
  • afterDatasetDraw:chartargs.index绘制给定的数据集后调用(数据集以相反的顺序绘制)。请注意,如果先前已取消数据集绘制,则不会调用此挂钩。
  • beforeTooltipDraw: 在绘制之前调用tooltip。如果有任何插件返回false,则取消工具提示绘制,直到render触发另一个。
  • afterTooltipDraw: 绘制后调用tooltip。请注意,如果之前取消了工具提示绘制,则不会调用此挂钩。
  • beforeEvent: 在处理指定的之前调用event。如果任何插件返回false,则该事件将被丢弃。
  • afterEvent:event被消费后调用。请注意,如果event之前已丢弃该钩子,则不会调用该钩子。
  • resize: 在调整图表大小后调用。
  • destroy:在图表被销毁后调用。