按名称动态添加事件侦听器

时间:2013-06-22 21:19:13

标签: event-handling dart

您如何将此功能从Javascript转换为Dart?

function addEvtListener(Element el, evtName, fn) {
    return el.addEventListener ? el.addEventListener(evtName, fn, false) : el.attachEvent('on' + evtName, fn);
}

主要问题是事件名称是动态的。我显然可以致电:

el.onClick.listen((event) => fn(event));

如果evtName是点击事件。但在Dart中有这样的方法吗?

el.on("click").listen(event) => fn(event));

2 个答案:

答案 0 :(得分:3)

Events类文档概述了按名称监听事件的不同方法:http://api.dartlang.org/docs/releases/latest/dart_html/Events.html

你会发现你可以做到这两点:

new EventStreamProvider(evtName).forTaget(el).listen(fn);

el.on[evtName].listen(fn);

答案 1 :(得分:2)

您可以使用:

(const EventStreamProvider<Event>(evtName)).forTarget(el).listen((e) => fn(e));