dart SDK中是否存在事件委派?

dart SDK中是否存在事件委派?,dart,Dart,想象一下,您希望听到对页面上任何锚元素的所有单击。页面上的锚可以在页面生存期内动态添加/删除,并且您希望注册所有单击事件,即使是在新添加的页面上 有没有办法使用Dart的标准库在Dart中附加委派事件(如jQuery) 在jQuery中,可以使用element.on('click','selector',handler)实现这一点因为我没有找到可行的解决方案,所以我创建了支持委派的包 你可以在 代码很简单: 委托(父级、条件、处理程序){ 返回(事件){ var元素=event.target;

想象一下,您希望听到对页面上任何锚元素的所有单击。页面上的锚可以在页面生存期内动态添加/删除,并且您希望注册所有单击事件,即使是在新添加的页面上

有没有办法使用Dart的标准库在Dart中附加委派事件(如jQuery)


在jQuery中,可以使用
element.on('click','selector',handler)实现这一点

因为我没有找到可行的解决方案,所以我创建了支持委派的包

你可以在

代码很简单:

委托(父级、条件、处理程序){
返回(事件){
var元素=event.target;
while(元素!=parent&&element!=null){
if(条件(要素)){
处理程序(事件、元素);
}
element=element.parent;
}
};
}
delegateOn(父、字符串事件类型、条件、处理程序){
[eventType]上的parent.listen(委托(父级、条件、处理程序));
}
您现在可以这样做:

document.body.onClick.matches('.selector').listen((事件){
打印(“超级酷!”);
//事件的当前注册目标
//文件正文
event.currentTarget;
//CSS选择器匹配的元素
//.选择器
event.matchingTarget;
//事件最初调度到的目标
//实际元素在.selector下单击
事件目标;
});

遗憾的是,没有,我还在我们的应用程序中创建了一个helper方法,但真正的解决方案是在dart:html或Pub包中使用它,这很有趣。它到底是如何工作的?
事件中的目标是什么?想象一下,在
div class='selector'
中,有一些
单击我元素。现在我们可以对三种不同的元素感兴趣:i)
body
我们正在收听的元素(这很容易获得),ii)
我们正在匹配的选择器
元素,iii)
元素,它们确实收到了点击。以下哪一项将出现在
事件中。target
?是否有可能以某种方式获得其他目标?我只是做了一个快速测试:
e.currentTarget
指向
文档。body
e.target
指向
单击我。我认为您无法检索匹配
.selector
的元素,因为可能有多个
.matches
方法链接在一起。jQuery是如何处理的?在jQuery中,传递给委托事件处理程序的
事件
对象有三个属性:
事件。目标
如果在Dart中无法获得与jQuery
事件的等价物。currentTarget
,则会使委托功能变得非常不可用:-(现在有一个属性)。