如何以编程方式触发D3拖动事件?

flo*_*bon 6 javascript d3.js

所以我有一些与拖动事件监听器绑定的数据:

myNodes.enter()
    .append("svg:g")
    .call(d3.behavior.drag()
        .on("drag", function() { 
            console.log(d3.event.dx, d3.event.dy);
        })
    );
Run Code Online (Sandbox Code Playgroud)

现在我想以编程方式在某个节点上调用此onDrag函数.我知道标准事件可以做到这一点

aNode.on("click")() // works
aNode.on("drag")()  // doesn't work
Run Code Online (Sandbox Code Playgroud)

有没有办法这样做?谢谢.

rou*_*bin 3

将回调(传递到拖动处理程序的回调)保存在变量中,然后在其他上下文中调用该变量。

var dragCallback = function(){
    console.log(d3.event.dx, d3.event.dy);
};
var dragBehavior = d3.behavior.drag()
    .on("drag", dragCallback);
myNodes.enter()
    .append("g")
    .call(dragBehavior);
    //Call drag method programmatically
dragCallback()
Run Code Online (Sandbox Code Playgroud)