gpt4 book ai didi

javascript - d3js 如何将参数传递给 Force Tick 事件?

转载 作者:行者123 更新时间:2023-11-29 22:14:03 24 4
gpt4 key购买 nike

我有一个使用 requirejs 的成熟 javascript 应用程序,因此我不能依赖全局变量。我的节点网络在概念验证中运行了 d3js,但我在 Tick 事件监听器方面遇到了问题,因为我需要将对象引用传递给它,以便 Tick 事件处理程序可以使用发送者对象上的属性。

我目前有:

MyClass.prototype.SetupD3Force = function()
{
this.Force = d3.layout.force()
.size([200, 200])
.nodes([])
.charge(-120)
.on("tick", this.Tick);

// snip some code here
}

MyClass.prototype.Tick = function()
{
// Need to get hold of the sender's object properties
}

我希望能够做到:

MyClass.prototype.SetupD3Force = function()
{
var width = 200;
var height = 200;

this.Force = d3.layout.force()
.size([width, height])
.nodes([])
.charge(-120)
.linkDistance(function(d) {
return d.value;
})
.on("tick", this.Tick, this); // Add a reference to the sender

// snip some code here
}

MyClass.prototype.Tick = function(sender)
{
// Now I can get hold of my properties
sender.MyProperties...
}

我错过了什么吗?如何将参数传递给 Tick 事件?

感谢您的帮助!

最佳答案

如果 tick 函数中的“this”上下文还不是发送者,您可以使用 .bind function将外部上下文绑定(bind)到 Tick 的“this”上下文:

.on("tick", this.Tick.bind(this) )

然后在以后使用它们:

MyClass.prototype.Tick = function()
{
console.log(this.width);
}

您还可以传递更多您希望包含在函数参数中的参数。请参阅上面的链接以及 this one from MSDN .

关于javascript - d3js 如何将参数传递给 Force Tick 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16300467/

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