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

90 lines
3.7 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": "pagination",
"end": "vue3",
"curated": true,
"summary": "Vue 3 分页条:上一页/当前页/下一页三件套,并在右侧汇总总条数与每页条数。",
"usage": [
"defineProps 声明 total/page/pageSize/size 四项,defineEmits 声明四个事件(含未实现的 sizechange),当前页只以静态 is-current 类标出(Pagination.vue3.vue:13)。",
"上一页用 Math.max(1, page - 1) 兜底,下一页直接 page + 1,因此组件自身不判断是否已到末页(Pagination.vue3.vue:2)。",
"total 与 pageSize 只用于右侧统计文案「共 N 条 · 每页 M 条」,不参与翻页计算(Pagination.vue3.vue:2)。",
"除 update:modelValue 与 change 外,另声明了 pagechange 与 sizechange 两个事件,其中 sizechange 在模板中没有触发点(Pagination.vue3.vue:13)。",
"当前页按钮静态带 is-current 类,没有可点击的页码列表(Pagination.vue3.vue:2)。"
],
"bestPractices": [
"末页防护要自己做:继续点下一页会一直递增页码并回写,不会自动停在最后一页(Pagination.vue3.vue:2)。",
"sizechange 声明未实现,也没有 pageSize 选择器;示例里 page-size 是固定值(Pagination.vue3.vue:13)。",
"size prop(尺寸)传入不改变外观,只影响未消费的声明,尺寸差异需外部 CSS 覆盖 kole-pagination 类(Pagination.vue3.vue:11)。"
],
"apiCarrier": {
"kind": "props",
"note": "本端一次性声明了四个事件(update:modelValue、change、pagechange、sizechange),其中 sizechange 与 size prop 均未实现。",
"table": [
{
"name": "total",
"type": "Number",
"desc": "总条数,默认 128;仅用于统计文案"
},
{
"name": "page",
"type": "Number",
"desc": "当前页码,默认 1;受控值,组件不改它"
},
{
"name": "pageSize",
"type": "Number",
"desc": "每页条数,默认 10;仅用于统计文案"
},
{
"name": "size",
"type": "String",
"desc": "尺寸,默认 default;当前模板未消费该值"
},
{
"name": "update:modelValue",
"type": "emit(payload: Number)",
"desc": "翻页时回写新页码"
},
{
"name": "change",
"type": "emit(payload: Number)",
"desc": "与 update:modelValue 同载荷的独立事件"
},
{
"name": "pagechange",
"type": "emit(payload: Number)",
"desc": "翻页事件,载荷为新页码"
},
{
"name": "sizechange",
"type": "emit(declared only)",
"desc": "声明了该事件但模板内没有触发点"
}
]
},
"a11y": [
"容器有 aria-label=\"分页\",三个按钮都是原生 button,键盘可达(Pagination.vue3.vue:2)。",
"当前页按钮没有 aria-current=\"page\",上下页按钮没有 aria-label 区分「上一页/下一页」之外的语义,读屏只能靠文字(Pagination.vue3.vue:2)。"
],
"resources": [
{
"file": "frameworks/Pagination.vue3.vue",
"kind": "Vue 3 组件",
"desc": "pagination 的 Vue 3(<script setup>)实现源码"
},
{
"file": "frameworks/Pagination.css",
"kind": "样式",
"desc": "该组件在 PC 端共用的样式表"
}
],
"exampleIds": [
"pagination-ex-1",
"pagination-ex-2"
],
"notes": [
"frameworks/Pagination.vue3.vue:13 — 声明四个事件,sizechange 无触发点",
"frameworks/Pagination.vue3.vue:2 — 上一页兜底到 1,下一页无末页判断",
"frameworks/Pagination.vue3.vue:2 — 当前页静态类"
]
}