优化value属性绑定, 自动转为赋值绑定
parent
0f09245657
commit
fc585abcdf
15
src/html.js
15
src/html.js
|
@ -13,11 +13,13 @@ const MARKER = `{{^wkit${String(Math.random()).slice(-8)}^}}`
|
||||||
const MARKER_MATCH = '?' + MARKER
|
const MARKER_MATCH = '?' + MARKER
|
||||||
const NODE_MARKER = `<${MARKER_MATCH}>`
|
const NODE_MARKER = `<${MARKER_MATCH}>`
|
||||||
|
|
||||||
|
// 是否原始值
|
||||||
const isPrimitive = value =>
|
const isPrimitive = value =>
|
||||||
value === null || (typeof value != 'object' && typeof value != 'function')
|
value === null || (typeof value !== 'object' && typeof value !== 'function')
|
||||||
const isArray = Array.isArray
|
const isArray = Array.isArray
|
||||||
const isIterable = value =>
|
const isIterable = value =>
|
||||||
value ? isArray(value) || typeof value[Symbol.iterator] === 'function' : false
|
value ? isArray(value) || typeof value[Symbol.iterator] === 'function' : false
|
||||||
|
|
||||||
const SPACE_CHAR = `[ \n\f\r]`
|
const SPACE_CHAR = `[ \n\f\r]`
|
||||||
const ATTR_VALUE_CHAR = `[^ \n\f\r"'\`<>=]`
|
const ATTR_VALUE_CHAR = `[^ \n\f\r"'\`<>=]`
|
||||||
const NAME_CHAR = `[^\\s"'>=/]`
|
const NAME_CHAR = `[^\\s"'>=/]`
|
||||||
|
@ -573,10 +575,15 @@ class AttributePart {
|
||||||
elem.removeAttribute(attr)
|
elem.removeAttribute(attr)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (value === null || value === void 0) {
|
// value 绑定, 特殊处理
|
||||||
elem.removeAttribute(attr)
|
if (attr === 'value') {
|
||||||
|
elem.value = value
|
||||||
} else {
|
} else {
|
||||||
elem.setAttribute(attr, value)
|
if (value === null || value === void 0) {
|
||||||
|
elem.removeAttribute(attr)
|
||||||
|
} else {
|
||||||
|
elem.setAttribute(attr, value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue