代码迁移
This commit is contained in:
124
src/Obj/Element/Dialog/eventBinding.js
Normal file
124
src/Obj/Element/Dialog/eventBinding.js
Normal file
@ -0,0 +1,124 @@
|
||||
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) {
|
||||
this.element = {}
|
||||
for (let i = 0; i < elements.length; i++) {
|
||||
if (!elements[i] || !elements[i].attributes) {
|
||||
continue;
|
||||
}
|
||||
let Event = {
|
||||
'input': [],
|
||||
'change': [],
|
||||
'blur': [],
|
||||
'click': []
|
||||
}
|
||||
let isEvent = false
|
||||
let removeName = []
|
||||
for (let m of elements[i].attributes) {
|
||||
switch (m.name) {
|
||||
case '@model': {
|
||||
isEvent = true
|
||||
if (elements[i].type == 'checkbox') {
|
||||
Event.change.push((e) => { that[m.value] = e.target.checked })
|
||||
elements[i].checked = that[m.value]
|
||||
}
|
||||
else {
|
||||
if (elements[i].type == 'number') {
|
||||
Event.input.push((e) => {
|
||||
if (e.target.value || e.target.value === 0) {
|
||||
let value = e.target.value
|
||||
value = Number(value)
|
||||
if (e.data != '.' && (e.data != '-' || e.target.value)) {
|
||||
if (((!e.target.max) && (!e.target.min)) || ((value <= Number(e.target.max)) && value >= Number(e.target.min))) {
|
||||
that[m.value] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
Event.blur.push((e) => {
|
||||
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
|
||||
})
|
||||
}
|
||||
else {
|
||||
Event.input.push((e) => {
|
||||
that[m.value] = e.target.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': {
|
||||
isEvent = true
|
||||
Event.click.push((e) => {
|
||||
if (typeof (that[m.value]) === 'function') {
|
||||
that[m.value](e)
|
||||
}
|
||||
})
|
||||
removeName.push(m.name)
|
||||
break;
|
||||
}
|
||||
}
|
||||
// elements[i].attributes[m] = undefined
|
||||
}
|
||||
for (let n = 0; n < removeName.length; n++) {
|
||||
elements[i].attributes.removeNamedItem(removeName[n])
|
||||
}
|
||||
|
||||
if (isEvent) {
|
||||
for (let key in Event) {
|
||||
if (Event[key].length > 0) {
|
||||
elements[i].addEventListener(key, (e) => {
|
||||
for (let t = 0; t < Event[key].length; t++) {
|
||||
Event[key][t](e)
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default EventBinding;
|
Reference in New Issue
Block a user