test(vapor): v-model runtime tests

This commit is contained in:
Evan You 2025-02-02 15:53:04 +08:00
parent 0392eb41e0
commit 1f25e0d863
No known key found for this signature in database
GPG Key ID: 00E9AB7A6704CE0A
3 changed files with 364 additions and 405 deletions

View File

@ -90,7 +90,7 @@ export const vModelTextInit = (
if (trim) {
domValue = domValue.trim()
}
if (number) {
if (number || el.type === 'number') {
domValue = looseToNumber(domValue)
}
;(set || (el as any)[assignKey])(domValue)
@ -359,7 +359,14 @@ function getCheckboxValue(
checked: boolean,
) {
const key = checked ? '_trueValue' : '_falseValue'
return key in el ? el[key] : checked
if (key in el) {
return el[key]
}
const attr = checked ? 'true-value' : 'false-value'
if (el.hasAttribute(attr)) {
return el.getAttribute(attr)
}
return checked
}
export const vModelDynamic: ObjectDirective<

File diff suppressed because it is too large Load Diff

View File

@ -47,6 +47,16 @@ export function setAttr(el: any, key: string, value: any): void {
return
}
// special case for <input v-model type="checkbox"> with
// :true-value & :false-value
// store value as dom properties since non-string values will be
// stringified.
if (key === 'true-value') {
;(el as any)._trueValue = value
} else if (key === 'false-value') {
;(el as any)._falseValue = value
}
if (value !== el[`$${key}`]) {
el[`$${key}`] = value
if (value != null) {