如何在功能上调用画笔

时间:2013-03-31 16:06:07

标签: d3.js

this thread中,Mike Bostock解释说,设置画笔的范围并重新绘制画笔是两个独立的操作。我理解这一点,但我在解决细节方面遇到了麻烦。

他说你需要做以下事情:

brush.extent([0.2, 0.8]); 
svg.select(".brush").call(brush);

但是,当我执行call(brush)时,它只是在新范围上绘制画笔矩形。 “焦点”图表永远不会更新。但是,如果我调用我的brushed函数(我分配给我的画笔的函数),它就可以工作。

似乎call(brush)没有执行brushed。如何让它执行此功能?

更新:Here's a fiddle with my code。运行它时,请注意画笔已正确绘制,但焦点未更新。取消注释第180行,焦点也会重新绘制。

(当然,最终我会想要从图表对象外部做到这一点,但是现在我正在做的只是为了弄清楚出了什么问题。)

基本上,我问:如何从对象外部触发brushed函数?画笔事件处理程序如何执行此操作?

1 个答案:

答案 0 :(得分:3)

显式设置画笔的extent不会触发导致与其关联的功能被调用的事件。在这种情况下,最简单的解决方案是,正如您已经发现的那样,在设置范围后明确地调用brushed()