赞
踩
v-decorator看起来是一个vue指令, 他并不是vue本身的指令,它是通过ant-design-vue去获取表单数据时使用v-decorator方式去给每个项注册,这样才能通过组件去拉取表单的数据,同时对必填项做校验;
<template> <a-form @submit="handleOk" :form="form"> // :form="form" 必须优先注册 <!-- 客户姓名 --> <a-form-item :labelCol="labelCol" // 排列样式 :wrapperCol="wrapperCol" label='客户姓名:' > <a-input v-decorator="[ 'name', // 给表单赋值或拉取表单时,该input对应的key {rules: [{ required: true, message: '请输入客户名称!' }]} ]" placeholder="请输入客户名称"/> </a-form-item> </a-form> </template> export default { data() { return { form: this.$form.createForm(this), // 只有这样注册后,才能通过表单拉取数据 } }
this.form.validateFields((err, values) => {
if (err) {
// 这里做逻辑处理
console.log(values) // { name: '' }
}
}
this.form.setFieldsValue({
name: '设置值' //这里的name对应着v-decorator中的name
})
<a-form-item v-bind="formItemLayout" label="E-mail" > <a-input v-decorator="[ 'email', { rules: [{ type: 'email', message: 'The input is not valid E-mail!', }, { required: true, message: 'Please input your E-mail!', }] } ]" /> </a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label='手机:' > <a-input type="number" v-decorator="[ 'phone', { rules: [ { required: false, message: '请输入手机号码!' },] }, ]" @blur="validatePhoneBlur" placeholder='请输入手机号码' /> </a-form-item> // 校验事件 validatePhoneBlur(e) { const validatePhoneReg = /^1\d{10}$/ if (e.target.value && !validatePhoneReg.test(e.target.value)) { const arr = [{ message: '您输入的手机格式不正确!', field: 'phone', }] this.form.setFields({ phone: { value: e.target.value, errors: arr } }) } },
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。