triggerEvent('input', number)
await nextTick()
expect(data.number).toEqual(1.2)
+ triggerEvent('change', number)
+ await nextTick()
+ expect(number.value).toEqual('1.2')
trim.value = ' hello, world '
triggerEvent('input', trim)
Modifiers
>
+function castValue(value: string, trim?: boolean, number?: boolean | null) {
+ if (trim) value = value.trim()
+ if (number) value = looseToNumber(value)
+ return value
+}
+
// We are exporting the v-model runtime directly as vnode hooks so that it can
// be tree-shaken in case v-model is never used.
export const vModelText: ModelDirective<
number || (vnode.props && vnode.props.type === 'number')
addEventListener(el, lazy ? 'change' : 'input', e => {
if ((e.target as any).composing) return
- let domValue: string | number = el.value
- if (trim) {
- domValue = domValue.trim()
- }
- if (castToNumber) {
- domValue = looseToNumber(domValue)
- }
- el[assignKey](domValue)
+ el[assignKey](castValue(el.value, trim, castToNumber))
})
- if (trim) {
+ if (trim || castToNumber) {
addEventListener(el, 'change', () => {
- el.value = el.value.trim()
+ el.value = castValue(el.value, trim, castToNumber)
})
}
if (!lazy) {