src/directives/duplex/updateDataHandle.js
import { updateDataActions } from './updateDataActions'
export function updateDataHandle(event) {
var elem = this
var field = elem._ms_duplex_
if (elem.composing) {
//防止onpropertychange引发爆栈
return
}
if (elem.value === field.value) {
return
}
/* istanbul ignore if*/
if (elem.caret) {
try {
var pos = field.getCaret(elem)
field.pos = pos
} catch (e) {}
}
/* istanbul ignore if*/
if (field.debounceTime > 4) {
var timestamp = new Date()
var left = timestamp - field.time || 0
field.time = timestamp
/* istanbul ignore if*/
if (left >= field.debounceTime) {
updateDataActions[field.dtype].call(field)
/* istanbul ignore else*/
} else {
clearTimeout(field.debounceID)
field.debounceID = setTimeout(function() {
updateDataActions[field.dtype].call(field)
}, left)
}
} else if(field.isChanged){
setTimeout(function() {
//https://github.com/RubyLouvre/avalon/issues/1908
updateDataActions[field.dtype].call(field)
}, 4)
} else {
updateDataActions[field.dtype].call(field)
}
}
export {
updateDataHandle as updateModel
}