Files
aurora-admin/site/end-content/plateinput.vue3.json

61 lines
3.4 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"slug": "plateinput",
"end": "vue3",
"curated": true,
"summary": "Vue 3 端车牌输入:modelValue 收完整车牌串,内部拆成省份与号码主体分别编辑。",
"usage": [
"v-model 绑的是完整车牌串:实现把 modelValue[0] 当省份、slice(1) 当号码主体(第 29-30 行),传 \"京A12345\" 这种形式。",
"emit 只发生在号码输入框的 onInput 里,回传的是 prov + body 拼接串(第 46 行),父级拿到的永远是完整车牌。",
"号码主体会被规范化:转大写、剔除非 A-Z0-9 字符、截到 7 位(第 44 行),粘贴带连字符的内容会被清掉。",
"省份下拉用 v-model=\"prov\" 绑内部 ref(第 4 行),改省份只改内部状态、不派发事件,此时父级的 v-model 值仍是旧的。",
"defineProps 只有 modelValue 与 provinces(第 24-27 行),provinces 默认给京沪粤津冀鲁苏浙川渝十个简称(第 26 行)。"
],
"bestPractices": [
"prov 与 body 都是 ref(props.modelValue) 的一次性初始化(第 29-30 行),挂载后父级改 modelValue 不会同步进输入框。",
"合法判定是两条正则 /^[A-Z][A-Z0-9]{5}$/ 与 {6}(第 33 行),命中后者时 isNewEnergy 为真并在提示里标「新能源」(第 35、39 行)。",
"提示文案由 tipText 经 v-html 输出(第 17 行),里面拼进了 prov 与 body,改这段时要知道它是 innerHTML 而非文本节点。"
],
"a11y": [
"校验结果只体现在 .kole-plate-field 的 is-valid / is-invalid 类与下方 .kole-plate-tip 文本上(第 3、17 行),输入框没有 aria-invalid,也没用 aria-describedby 挂上提示。",
"省份是原生 <select>(第 4 行)、号码是原生 <input maxlength=\"7\">(第 7-10 行),键盘与读屏行为由浏览器提供。",
"提示里还嵌了一个 <span class=\"kole-plate-tag\">(第 39 行),读屏器会把「新能源」当普通文本连读,读不出它是个标记。"
],
"apiCarrier": {
"kind": "props",
"note": "本端载体是 modelValue、provinces 两个 props 加 update:modelValue 一个 emit;没有插槽,省份选项由 provinces 数组给出。",
"table": [
{
"name": "modelValue",
"type": "String",
"desc": "双向绑定值(frameworks/PlateInput.vue3.vue:25)"
},
{
"name": "provinces",
"type": "Array",
"desc": "省份数据(frameworks/PlateInput.vue3.vue:5)"
}
]
},
"resources": [
{
"file": "frameworks/PlateInput.vue3.vue",
"kind": "Vue 3",
"desc": "该端实现(本页 API 与用法的唯一权威来源)。"
},
{
"file": "frameworks/PlateInput.css",
"kind": "样式",
"desc": "该组件的样式文件,类名口径以它为准。"
}
],
"exampleIds": [
"plateinput-ex-1"
],
"notes": [
"props 与 emit 声明见 frameworks/PlateInput.vue3.vue:24-28,provinces 默认十个省简称见第 26 行。",
"拆值与一次性初始化在 frameworks/PlateInput.vue3.vue:29-30,无 watch 把 modelValue 回写进 prov / body。",
"省份 select 的 v-model 只改内部 prov(frameworks/PlateInput.vue3.vue:4),emit 唯一发生在 onInput(同文件第 46 行)。",
"实测该端 prop 名就是 modelValue、emit 名就是 update:modelValue(frameworks/PlateInput.vue3.vue:25、28),v-model 可接通。"
]
}