【发布时间】:2014-02-06 18:33:25
【问题描述】:
我正在使用 d3、svg 和 AngularJS。
我已经编写了一些代码来使用 d3 处理 svg 元素上的 mouseup 事件。代码如下:
<svg>
<!-- some other code-->
</svg>
function myFunction() {
var isMouseUp = false;
d3.select("svg").on("mouseup", func1);
}
function func1() {
isMouseUp = true;
}
如您所见,isMouseUp 是myFunction() 的局部变量。
我必须将它传递给func1()。我该怎么做?
附:我无法将isMouseUp 设为全局。我也不能将func1() 本地化为myFunction()。
【问题讨论】:
-
你必须声明
isMouseUp outside of any function for it to be accessible infunc1()`。在您的示例中,您不需要通过函数调用发送它。 -
@RoySchoep 感谢您的回复,但如果我将变量置于函数之外,它将成为全局变量,由于某些历史原因,我无法这样做。有什么办法可以让我在调用
func1()时传递变量吗? -
这可能是可能的,但这不会解决您的示例中的任何问题。您无法更改
func1()中 isMouseUp 的值,因为它在myFunction()的范围内,如果您必须在多个函数中操作变量,您肯定需要一个全局变量。 -
@RoySchoep 是的,我遇到了你谈到的问题。在那种情况下,我所做的是我获取了一个 JSON 对象,并且我获取了变量。为了问题的简单,我没有提到它。
-
你可以让func1的内联函数
d3.select("svg").on("mouseup", function(isMouseUp){ func1(isMouseUp);} );func1()看起来像function func1(isMouseUp){}
标签: javascript angularjs svg d3.js