gpt4 book ai didi

javascript - d3.拖拽() : initialize a variable on "start" and use it on "drag" and "end"

转载 作者:行者123 更新时间:2023-12-02 14:10:42 26 4
gpt4 key购买 nike

我有一个类似于下面的代码:

    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

最佳答案

你可以这样做:

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
});

由于您没有数据,这不是一个好方法:

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.
d3.select(this)[0][0].my_data = 1234;
})
.on("drag", function (d) {
var calculation = d3.select(this)[0][0].my_data;
//do something with calculation
})
.on("end", function (d) {
var calculation = d3.select(this)[0][0].my_data;
//do something with calculation
});

关于javascript - d3.拖拽() : initialize a variable on "start" and use it on "drag" and "end",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39607965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com