d3.dispatch() 未按预期工作
d3.dispatch() not working as expected
我一周前开始使用 D3.js,目前正在尝试弄清楚 d3.dispatch() 的工作原理。我有一个超级简单的例子
<script src="d3.min.js"></script>
<script>
var dispatch = d3.dispatch("load","click");
dispatch.load("Initial Value");
dispatch.on("load", function(textvalue) {
alert(textvalue);
dispatch.on("click", function(newvalue) {
alert(newvalue);
});
});
</script>
我本以为听众 dispatch.on("load",function(textvalue){}
会通过显示 JavaScript 警报对前一行 dispatch.load("Initial Value");
做出反应,但事实并非如此。在 Lars 的回应之后(感谢 Lars,它是有道理的......只是一个问题......)我编辑了代码如下:
d3.csv("data.csv", function(error, states) {
dispatch.load("Initial Value");
});
dispatch.on("load", function(textvalue) {
alert(textvalue);
dispatch.on("click", function(state) {
select.text(state);
});
});
</script>
我刚刚将调用 dispatch.load
更改为在 d3.csv()
调用中,在我看来这仍然是在定义处理程序之前调用 load()
,但在这种情况下它确实有效。是什么赋予了? P.S 也是 JavaScript 的新手所以请原谅我的天真。
如有任何帮助,我们将不胜感激
您的代码只是顺序错误 -- 在您调用 .load()
时,此事件的处理程序尚未定义。当您重新排列代码以便在调用它之前定义处理程序时它会起作用。
完成演示 here。
我一周前开始使用 D3.js,目前正在尝试弄清楚 d3.dispatch() 的工作原理。我有一个超级简单的例子
<script src="d3.min.js"></script>
<script>
var dispatch = d3.dispatch("load","click");
dispatch.load("Initial Value");
dispatch.on("load", function(textvalue) {
alert(textvalue);
dispatch.on("click", function(newvalue) {
alert(newvalue);
});
});
</script>
我本以为听众 dispatch.on("load",function(textvalue){}
会通过显示 JavaScript 警报对前一行 dispatch.load("Initial Value");
做出反应,但事实并非如此。在 Lars 的回应之后(感谢 Lars,它是有道理的......只是一个问题......)我编辑了代码如下:
d3.csv("data.csv", function(error, states) {
dispatch.load("Initial Value");
});
dispatch.on("load", function(textvalue) {
alert(textvalue);
dispatch.on("click", function(state) {
select.text(state);
});
});
</script>
我刚刚将调用 dispatch.load
更改为在 d3.csv()
调用中,在我看来这仍然是在定义处理程序之前调用 load()
,但在这种情况下它确实有效。是什么赋予了? P.S 也是 JavaScript 的新手所以请原谅我的天真。
如有任何帮助,我们将不胜感激
您的代码只是顺序错误 -- 在您调用 .load()
时,此事件的处理程序尚未定义。当您重新排列代码以便在调用它之前定义处理程序时它会起作用。
完成演示 here。