未捕获错误:未知类型:d3.js v5.4.0中的dragend

未捕获错误:未知类型:d3.js v5.4.0中的dragend,d3.js,release,release-notes,D3.js,Release,Release Notes,我使用的是d3.jsv5.4.0 下面是我得到的错误:未捕获错误:未知类型:dragend 这是因为我正在努力做到以下几点: d3.drag() .subject(function(d){ return {x: d.x, y: d.y}; }) .on("drag", function(args){ thisGraph.state.jus

我使用的是
d3.jsv5.4.0

下面是我得到的错误:
未捕获错误:未知类型:dragend

这是因为我正在努力做到以下几点:

            d3.drag()
            .subject(function(d){
                return {x: d.x, y: d.y};
            })
            .on("drag", function(args){
                thisGraph.state.justDragged = true;
                thisGraph.dragmove.call(thisGraph, args);
            })
            .on("dragend", function() {
                // todo check if edge-mode is selected
            });
而dragend现在似乎被弃用了

我试图找出发行说明,其中描述了新版本中的替代方案,但未能做到这一点


请帮我解决这个问题。

您可以通过拖动来监听的三个事件是当前的(v4和5.v3及以前的版本不同):

开始-新指针激活后(在鼠标向下或touchstart上)。 拖动-活动指针移动后(在mousemove或touchmove上)。 结束-在活动指针变为非活动状态后(在mouseup、touchend或touchcancel上)。()

所以,您只需要将dragend更改为end

var svg=d3.选择(“主体”)
.append(“svg”)
.attr(“宽度”,500)
.attr(“高度”,300);
var circle=svg.append(“circle”)
.attr(“cx”,100)
.attr(“cy”,100)
.attr(“r”,20)
.attr(“填充”、“钢蓝”)
.call(d3.drag().on(“start”,function()){
d3.选择(此).attr(“填充”、“橙色”)
})
.on(“拖动”,函数(){
d3.选择(this.attr(“cx”,d3.event.x)
.attr(“cy”,d3.event.y)
})
.on(“结束”,函数(){
d3.选择(此).attr(“填充”、“钢蓝”);
})
)

在这段代码中,如果你不从圆心拖动(如沿边拖动),圆会跳入鼠标点,如何使其与偏移一起工作?这是一个非常基本的示例,需要使用拖动主题来避免跳转,我在这里没有使用它,因为问题是关于事件侦听器的。请看这个完整的例子,或者看这个解释。实现主题的最简单方法是将x,y位置数据作为绑定基准的x,y属性(默认主题查找这些属性)。