2013-06-22 4 views
2

Как бы вы перевели эту функцию из 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 это событие щелчка. Но есть ли в Дарте такой метод?

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

ответ

2

Вы можете использовать:

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

Документация События класса есть обзор различных способов, чтобы слушать на событие по имени: http://api.dartlang.org/docs/releases/latest/dart_html/Events.html

Вы увидите, что вы можете сделать как:

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

или

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