2

这个线程中,Mike Bostock 解释说设置画笔的范围和重绘画笔是两个独立的操作。我明白这一点,但我无法弄清楚细节。

他说您需要执行以下操作:

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

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

好像call(brush)没有执行brushed。我如何让它执行这个功能?

更新:这是我的代码的一个小提琴。运行它时,请注意画笔已正确绘制,但焦点未更新。取消注释第 180 行,焦点也被重新绘制。

(当然,最终我会想从图表对象外部执行此操作,但现在我在内部执行此操作只是为了找出问题所在。)

本质上,我在问:如何brushed从对象外部触发函数?画笔事件处理程序是如何做到的?

4

1 回答 1

3

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

于 2013-03-31T17:28:38.583 回答