dc.js - 收听图表组渲染

时间:2014-08-16 02:58:43

标签: d3.js dc.js crossfilter

我试图通过引入dc.js来重构我编写的一些自定义d3代码,以渲染一系列由交叉滤波器驱动的图表。

我的主要问题是我有一些dc.js不支持的图表类型(例如Sunburst Partition),我试图找出如何与dc一起渲染它们。 js chart group。

过滤单个dc.js图表​​将自动呈现/重绘属于同一chartGroup的所有其他图表。是否有可能以某种方式挂钩到全局重新渲染事件,以便我可以同时重新绘制非dc图表?

我知道每个单独的图表上都有听众,例如chart.on("postRender", function(chart){...})但似乎没有办法重新渲染一组图表。是否有一种良好的模式可以实现这一目标?

1 个答案:

答案 0 :(得分:10)

执行此操作的“正确”方法是使用dc.registerChart

在dc注册表中注册您的图表

https://github.com/dc-js/dc.js/blob/master/src/core.js#L91

不幸的是这个东西目前没有记录,但实际上这里有很轻的耦合。您只需要在某个对象(您的图表或包装器)上实现.redraw().render(),并将其作为第一个arg传递。

将它放在与应响应的图表相同的组(第二个arg)中。

render()从头开始创建dom元素,redraw()在数据更改时更新它们。

看起来您可能还需要实施虚拟.filterAll()但这是一种疏忽。

我添加了一个问题来记录这些内容:

https://github.com/dc-js/dc.js/issues/676

如果您遇到麻烦,请在那里或此处发表评论。

编辑:感谢Jasmine Hegman,现在已经记录了这一点。请参阅chartRegistry documentation