oxe
Version:
A mighty tiny web components framework/library
36 lines (28 loc) • 1.23 kB
JavaScript
import Utility from '../utility.js';
export default function (binder) {
return {
read (context) {
context.data = binder.data;
if (typeof context.data !== 'function') {
console.warn(`Oxe - binder o-on="${binder.keys.join('.')}" invalid type function required`);
return;
}
if (binder.meta.method) {
binder.target.removeEventListener(binder.names[1], binder.meta.method);
} else {
binder.meta.method = function (events) {
const parameters = [];
for (let i = 0, l = binder.pipes.length; i < l; i++) {
const keys = binder.pipes[i].split('.');
const parameter = Utility.getByPath(binder.container.model, keys);
parameters.push(parameter);
}
parameters.push(events);
parameters.push(this);
Promise.resolve(context.data.bind(binder.container).apply(null, parameters));
};
}
binder.target.addEventListener(binder.names[1], binder.meta.method);
}
};
}