Resolve and bind handlers from strings. Inspired by event delegation in Backbone.js.
npm install resolve-handlers
import { resolveDOMEventHandlers } from 'resolve-handlers';
/**
* CommentController
*/
export default class CommentController {
constructor(element) {
// Target for event listeners
this.element = element;
// Resolve event handlers
this._resolvedEventHandlers = resolveDOMEventHandlers.call(this, this.getDOMEventHandlerStrings());
// Add event listeners
this.addEventListeners();
}
getDOMEventHandlerStrings() {
return [
'click .comment > .btn-delete: onDeleteCommentClick',
'focusin .comment: onCommentFocus',
'click .comment: onCommentClick'
];
}
onDeleteCommentClick() {
/* delete handler */
}
onCommentFocus() {
/* focus handler */
}
onCommentClick() {
/* click handler */
}
addEventListeners() {
this._resolvedEventHandlers.forEach(eventHandler => {
this.element.addEventListener(eventHandler.eventType, eventHandler);
});
}
removeEventListeners() {
this._resolvedEventHandlers.forEach(eventHandler => {
this.element.removeEventListener(eventHandler.eventType, eventHandler);
});
}
}
- Dependency updates
- Babel config for build
- getResolveFunction now returns a function that needs context.
- resolveDOMEventHandlers tests.
- Dev env config and dependency updates (eslint, babel, nyc).
- Removed dependency component-closest
This software is licensed under the MIT License.