我正在使用d3制作一系列最适合的应用程序,其中我希望在我拖动点周围时更新最适合的行。我得到了它的工作,所以当你的拖动结束时,行自行更新。但是,当涉及到实际更新时,我无法这样做。
这是我的拖动功能:
var move = d3.behavior.drag()
.on("drag",drag)
.on("dragend",function(){
dict.length = 0;
var dragPoint = d3.select(this);
var newX = x_scale2(parseInt(dragPoint.attr("cx")));
var newY = y_scale2(parseInt(dragPoint.attr("cy")));
model.replace_point(dragPoint.attr("id"),newX,newY);
updateDisplay();
});
function drag(){
var dragPoint = d3.select(this);
dragPoint
.attr("cx",function(){return d3.event.dx + parseInt(dragPoint.attr("cx"));})
.attr("cy",function(){return d3.event.dy +parseInt(dragPoint.attr("cy"));})
}
**对于如何实现我的目标的任何帮助将不胜感激**
答案 0 :(得分:1)
您可以在拖动功能中包含'更新代码' 每次触发拖动事件时,该行都将更新。这意味着每次点的位置都会发生变化。
var move = d3.behavior.drag()
.on("drag", drag);
function drag() {
var dragPoint = d3.select(this);
dragPoint
.attr("cx", d3.event.dx + parseInt(dragPoint.attr("cx")))
.attr("cy", d3.event.dy + parseInt(dragPoint.attr("cy")));
var newX = x_scale2(parseInt(dragPoint.attr("cx")));
var newY = y_scale2(parseInt(dragPoint.attr("cy")));
model.replace_point(dragPoint.attr("id"), newX, newY);
updateDisplay();
}