all files / directives/duplex/ updateDataHandle.js

91.67% Statements 22/24
92.86% Branches 13/14
66.67% Functions 2/3
91.67% Lines 22/24
11 statements, 1 function, 6 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47    55× 55× 55×   13×   42× 31×     11×       11×           11×           11×            
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*/
    Iif (elem.caret) {
        try {
            var pos = field.getCaret(elem)
            field.pos = pos
        } catch (e) {}
    }
    /* istanbul ignore if*/
    Iif (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 Iif(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
}