class eventBinding { constructor() { this.element = {} } static event = {} getEvent(name) { return eventBinding.event[name] } getEventAll() { return eventBinding.event } setEvent(name, event) { eventBinding.event[name] = event } on(that, elements) { for (let i = 0; i < elements.length; i++) { let Event = [] let isEvent = false let removeName = [] let blurEvent = ()=>{} if (!elements[i] ||!elements[i].attributes) { continue; } for (let m of elements[i].attributes) { switch (m.name) { case '@model': { isEvent = true if (elements[i].type == 'checkbox') { Event.push((e) => { that[m.value] = e.target.checked }) elements[i].checked = that[m.value] } else { Event.push((e) => { let value = e.target.value if (e.target.type == 'number') { if (e.data != '.' && (e.data != '-' || e.target.value)) { let v = Number(value) if((e.target.max) && v>Number(e.target.max)) { value = Number(e.target.max) } if((e.target.min) && v { let value = e.target.value if (e.target.value || (e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null))) { value = Number(value) if ((e.target.max) && value > Number(e.target.max)) { value = Number(e.target.max) } if ((e.target.min) && value < Number(e.target.min)) { value = Number(e.target.min) } if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) { value = Number(e.target.dataset.min) } } that[m.value] = value } if(elements[i].nodeName=='IMG') { elements[i].src = that[m.value] } else { elements[i].value = that[m.value] } } if(this.element[m.value]) { this.element[m.value].push(elements[i]) } else { this.element[m.value] = [elements[i]] } removeName.push(m.name) break; } case '@click': { elements[i].addEventListener('click', (e) => { if (typeof (that[m.value]) === 'function') { that[m.value](e) } }); removeName.push(m.name) // elements[i].attributes.removeNamedItem(m.name) break; } case '@change': { isEvent = true Event.push((e) => { let value = e.target.value if(e.target.type == 'number' && value!='') { value = Number(value) e.target.value = value } if (typeof (that[m.value]) === 'function') { that[m.value](e, value) } }) break; } } // elements[i].attributes[m] = undefined } for(let n=0;n { for (let t = 0; t < Event.length; t++) { Event[t](e) } }); elements[i].addEventListener('blur', (e) => { blurEvent(e) }); } } } } const EventBinding = new eventBinding(); export default EventBinding;