Skip to content

Form 表单

基础用法

  • 用于数据收集及验证。
  • 内置的数据验证器提供了丰富的场景支持,使得数据校验变得异常容易。同时支持自定义数据校验,满足您的各种需求。
  • 分为两个组件:sn-formsn-form-item
  • sn-form-item 可以独立使用,但独立使用时无法校验数据。
vue
<template>
	<sn-form ref="formEle"
	v-model="formData">
		<sn-form-item label="姓名" 
		field="name" 
		required
		:rule="nameRule">
			<sn-input v-model="(formData['name'] as string)">
  			</sn-input>
		</sn-form-item>
		<sn-form-item label="性别"
		field="gender" 
		required
		:rule="genderRule">
			<sn-radio-group v-model="(formData['gender'] as number)">
				<sn-radio text="男"></sn-radio>
				<sn-radio text="女"></sn-radio>
  			</sn-radio-group>
		</sn-form-item>
  	</sn-form>
	<sn-button type="primary"
	text="提交"
	@click="submit"></sn-button>
</template>
vue
<script setup>
	import { $snui, SnFormValidResult, SnFormItemRule } from '@/uni_modules/sinle-ui'

	const formEle = ref(null as SnFormComponentPublicInstance | null)
	const formData = ref({
		name: '',
		age: 0
	})
	const nameRule = ref({
		type: 'chinese',
		required: true,
		message: '请填写正确的中文姓名',
		valid: (value: any):string=>{
			if ((value as string).length > 5){
				return '姓名过长'
			}
			return ''
		}
	} as SnFormItemRule)
	
	const ageRule = ref({
		type: 'integer',
		required: true,
		message: '请填写正确的年龄',
		valid: (value: any):string=>{
			if ((value as number)<18 && formData.value['inParty'] as boolean) {
				return '党员必须年满18周岁'
			}
			return ''
		}
	} as SnFormItemRule)
	
	function submit(){
		formEle.value!.$callMethod('submit', {
			success: ()=>{
				uni.showModal({
					title: '提示',
					content: '提交成功'
				})
			}
		} as SnFormValidResult)
	}
</script>

更多演示请下载 demo 查看

属性

sn-form

参数说明类型默认值可选值
vModel表单数据(每一个健对应 sn-form-itemfield 属性,值即为表单组件的 v-modelUTSJSONObject{}-
type表单项样式类型。分为 embed(嵌入式)和float(浮动式)Stringembedembed | float
labelColor表单项标题颜色String$textLight-
labelSize表单项标题字体大小String$3-
labelWidth表单项标题宽度Stringauto-
showError是否显示校验错误提示Booleantruetrue | false
showBorder是否显示表单项分割线(仅 embed 模式生效)Booleantruetrue | false
triggerChange是否启用数据变化自动校验Booleanfalsetrue | false
customStyle自定义表单样式UTSJSONObject{}-

sn-form-item

参数说明类型默认值可选值
type表单项样式类型。分为 embed(嵌入式)和float(浮动式)(不为空则覆盖 sn-form 配置)String--
label表单项标题String--
labelColor表单项标题颜色(不为空则覆盖 sn-form 配置)String--
labelSize表单项标题字体大小(不为空则覆盖 sn-form 配置)String--
labelWidth表单项标题宽度(不为空则覆盖 sn-form 配置)String--
field表单项名称String--
rule表单项校验规则SnFormItemRule--
customStyle自定义表单项样式UTSJSONObject{}-

事件

sn-form

名称类型说明
submited() => void提交成功时触发
change(value: UTSJSONObject) => void数据变化时触发

插槽

sn-form

名称说明
default必选。放置 sn-form-item 子组件。

sn-form-item

名称说明
default在这里放置内部表单组件,如 sn-inputsn-switch

方法

名称参数返回值描述
submit(callback: SnFormValidResult)-提交回调。

使用 MIT 协议