Uncaught Ошибка: неизвестный тип: dragend в d3.js v5.4.0
Я использую d3.js v5.4.0
,
Вот ошибка, которую я получаю: Uncaught Error: unknown type: 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
кажется, устарела сейчас.
Я попытался найти примечания к выпуску, которые описали бы альтернативу этому в более новых версиях, но не смог этого сделать.
Пожалуйста, помогите мне решить проблему.
1 ответ
Три события, которые вы можете прослушивать с помощью перетаскивания, в настоящее время (v4 и 5. v3 и предыдущие были разными):
начало - после того, как новый указатель станет активным (при mousedown или touchstart). перетащить - после перемещения активного указателя (при перемещении мыши или касании). конец - после того, как активный указатель становится неактивным (при наведении мыши, касании или касании). ( документы)
Итак, вам просто нужно поменять драгенд до конца
var svg = d3.select("body")
.append("svg")
.attr("width",500)
.attr("height",300);
var circle = svg.append("circle")
.attr("cx",100)
.attr("cy",100)
.attr("r",20)
.attr("fill","steelblue")
.call(d3.drag().on("start", function() {
d3.select(this).attr("fill", "orange")
})
.on("drag", function() {
d3.select(this).attr("cx",d3.event.x)
.attr("cy", d3.event.y )
})
.on("end", function() {
d3.select(this).attr("fill","steelblue");
})
)
<script src="https://d3js.org/d3.v5.js"></script>