8

だから私はドラッグイベントリスナーとバインドされたいくつかのデータを持っています:

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

ここで、プログラムで特定のノードでこのonDrag関数を呼び出します。私は同じことが標準的なイベントでも可能であることを知っています

aNode.on("click")() // works
aNode.on("drag")()  // doesn't work

そうする方法はありますか?ありがとう。

4

1 に答える 1

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()
于 2013-07-24T14:29:42.520 に答える