我之前遇到过这个问题&这是因为我的d3.select不符合我的attr。但是,我没有从当前的错误中收到任何错误,我在做错的方面有点丢失:
var drag = d3.behavior.drag()
.origin(Object)
.on("drag", function(d, i) {
d.x = d3.event.x;
d.y = d3.event.y;
d3.select(this).attr("transform", "translate("+nodes[i].locations[0].x+","+nodes[i].locations[0].y+")");
});
正如您所看到的,我正在浏览索引以查找所有位置。这会影响拖动功能吗?
var node = svg.selectAll("g.node")
.data(nodes)
node.enter().append("g")
.call(drag)
.attr('class', 'node');
node.attr("transform", function(d,i) { return"translate("+nodes[i].locations[0].x+","+nodes[i].locations[0].y+")"; })
我很困惑为什么这不起作用
我还尝试更改我的ondrag函数,但是当我尝试拖动节点时它只移动到中心
.on("drag", function(d, i) {
nodes[i].locations[0].x = d3.event.x;
nodes[i].locations[0].y = d3.event.y;
d3.select(this).attr("transform", "translate ("translate("+nodes[i].locations[0].x+","+nodes[i].locations[0].y+")");
// draw();
});
感谢。
答案 0 :(得分:0)
我相信我找到了解决问题的方法:
.on("drag", function(d, i) {
nodes[i].locations[0].x += d3.event.dx;
nodes[i].locations[0].y += d3.event.dy;