Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-将事件分派到集合中的所有对象_Javascript_Set_Konvajs_Event Dispatching_For Of Loop - Fatal编程技术网

Javascript-将事件分派到集合中的所有对象

Javascript-将事件分派到集合中的所有对象,javascript,set,konvajs,event-dispatching,for-of-loop,Javascript,Set,Konvajs,Event Dispatching,For Of Loop,如何将自定义事件分派到集合中的所有自定义对象 class Node{...} a = new Node(...); b = new Node(...); var nodeSet = new Set(...); let myEvent = new CustomEvent(...); for (var node of nodeSet){ node.shape.dispatchEvent(myEvent); } Node.shape是一个形状 由于我是Javascript初学者,请

如何将自定义事件分派到集合中的所有自定义对象

class Node{...}

a = new Node(...);
b = new Node(...);

var nodeSet = new Set(...);
let myEvent = new CustomEvent(...);

for (var node of nodeSet){
     node.shape.dispatchEvent(myEvent); 
}
Node.shape是一个形状


由于我是Javascript初学者,请保持回复易于理解,谢谢。

为了使您的自定义事件与Konva
节点
对象一起工作,
Shape
子类有一个
on
方法,允许您直接在Shape上注册侦听器

这样做:

类节点{…}
a=新节点(…);
b=新节点(…);
a、 shape.on('Yo!',handler);
b、 share.on('Yo!',handler);
//所有4000种形状
var nodeSet=新集合(…);
设myEvent=newcustomevent('Yo!');
//如果每个形状对CustomEvent的处理只有一个处理程序
for(节点集的变量节点){
node.shape.on('Yo!',handler);
}
for(节点集的变量节点){
node.shape.dispatchEvent(myEvent);

}
@RandyCasburn我在谷歌上快速搜索了一下“事件接收者对象javscript”,但我找不到任何我能理解的东西。你愿意扩展吗?我不清楚-我已经用下面的一个解决方案回答了。啊,我明白了,我会尝试一下,让你知道。我之前考虑过这一点,但认为这有点可怕,尽管如此,解决方案仍然是解决方案。非常感谢。我进行了编辑以确保每个
节点
对象都被识别。我将事件处理程序绑定到实例。如果您不喜欢将其分派到元素,您可以始终将其分派到
文档
,但随后它会在整个事件处理阶段进行分派。非常感谢您,我仍然会将此问题留待一段时间,让其他建议进来。这很酷。很乐意帮忙。你想要什么样的变体?我刚刚将它从
div
更改为
EventTarget
,为你-工作。同样的方法。我想你会发现任何其他解决方案都需要将事件发送到文档或每个单独的节点。好吧,我屈服了——我去看了文档。这是你的解决方案(尽管很糟糕)。除非这些类是可扩展的,否则您将绑定到API。那么你可以用另一种方法。