D3版本4.2.2

我有一个图表,希望用户能够通过笔刷选择继续放大。我想在结束事件中清除或重置笔刷,以使用户看不到旧笔刷。

当前的TypeScript代码:

    let brushGroup = this.svg.append('g')
        .attr('class', 'brush');

    let b = brushX()
        .on('start', () => {
            console.log('start brush');
            brushGroup.style('opacity', 100);
        })
        .on('end', () => {
            console.log('end brush', event.selection);
            // remove and display none destroy the brush, so use opacity
            brushGroup.style('opacity', 0);

            this.updateDateRange(this.xScale.invert(event.selection[0]),
                this.xScale.invert(event.selection[1]));
        });

    brushGroup.call(b);
    console.log(brushGroup);



display: none防止将来发生画笔启动事件
brushGroup.remove()也会破坏画笔
不透明有效,但笔刷仍然存在(鼠标光标在悬停时发生变化)


那么清除或重置画笔的正确方法是什么?


我应该将其移至0,0吗?
我应该每次都销毁旧画笔并创建新画笔吗?

最佳答案

selection.call(brush.move,null);

https://github.com/d3/d3-brush/issues/10

09-10 11:01