Area
Area是基于AreaPanel实现的弹出式封装,大部分配置项可直接参考AreaPanel。
基础使用
vue
<script setup lang="ts">
import { createForm } from '@silver-formily/core'
import { Area, Form, FormButtonGroup, FormItem, Submit } from '@silver-formily/vant'
import { Field } from '@silver-formily/vue'
import { areaList } from '@vant/area-data'
import { showDemoResult } from '../shared'
const form = createForm({
values: {
areaCode: '330102',
},
})
async function handleSubmit(values: typeof form.values) {
await showDemoResult(values)
}
</script>
<template>
<Form :form="form">
<Field
name="areaCode"
title="省市区"
:decorator="[FormItem, { isLink: true }]"
:component="[Area, { areaList }]"
/>
<FormButtonGroup>
<Submit @submit="handleSubmit">
查看结果
</Submit>
</FormButtonGroup>
</Form>
</template>API
使用约定
- 触发区交互状态跟随
Field的disabled/readOnly/readPretty,不会透传到内部 AreaPanel displayFormatter可自定义触发区回显文本
其余约定请参考 AreaPanel
补充 Props
| 属性名 | 类型 | 描述 | 默认值 |
|---|---|---|---|
placeholder | string | 触发输入框占位文本 | '请选择' |
separator | string | 触发输入框回显分隔符 | ' / ' |
popupProps | AreaPopupProps | 透传给 Popup 的属性 | {} |
displayFormatter | Function | 自定义触发输入框回显 | - |
地区面板相关属性和插槽可以直接参考 AreaPanel,例如 modelValue、areaList、columnsNum、columnsPlaceholder 等。
Popup Props
参考 createPopup。
Events
| 事件名 | 描述 | 回调参数 |
|---|---|---|
update:modelValue | 点击确认后同步字段值 | Function |
opened | 弹层打开后触发 | - |
closed | 弹层关闭后触发 | - |