d3.drag():在" start"上初始化变量并在"拖动"和"结束"

时间:2016-09-21 05:06:59

标签: javascript d3.js

我的代码类似于下面的代码:

    var dragme = d3.drag()
        .on("start", function (d) {
           var variable1 =   // complex calucaltion result;
        })
        .on("drag", function (d) {
            //do something with variable1 without repeating the complex calculation 
        })
        .on("end", function (d) {
            //access variable1 again without repeat calculation
        });

如果不将variable1扩展到drag()的上下文中,如何实现这一目标?

更新:函数调用如下:

d3.select("#container").call(dragme); //#container is a svg group

1 个答案:

答案 0 :(得分:2)

你可以这样做:

ImageView

由于你没有数据,这是不太好的方法:

var dragme = d3.drag()
        .on("start", function (d) {
           var variable1 = d3.select(this).attr("x");
           //do some heavy calculation and store in variable
           var calculation = 12354;
           //store it in the data model.
           d.calculation = calculation; 
        })
        .on("drag", function (d) {
          //do something with d.calculation
        })
        .on("end", function (d) {
          //do something with d.calculation    
        });