select组件在选择时,默认是取value值,文本展示为label,在做表单校验时,发现select校验失效
html部分
<Form ref="formValidate" :model="formValidate" :rules="ruleValidate">
<FormItem label="负责人" prop="person">
<Select v-model="formValidate['person']">
<Option v-for="user in userList" :key="user.id" :value="user.userid">{{user.name}}</Option>
</Select>
</FormItem>
</Form>
js部分
ruleValidate: {
person: [
{ required: true, message: 'Please select the person', trigger: 'change' }
]
}
后来看官方文档发现,传送门
Type
Indicates the type of validator to use. Recognised type values are:
. string: Must be of type string. This is the default type.
. number: Must be of type number.
. boolean: Must be of type boolean.
. method: Must be of type function.
. regexp: Must be an instance of RegExp or a string that does not generate an exception when creating a new RegExp.
. integer: Must be of type number and an integer.
. float: Must be of type number and a floating point number.
. array: Must be an array as determined by Array.isArray.
. object: Must be of type object and not Array.isArray.
. enum: Value must exist in the enum.
. date: Value must be valid as determined by Dateurl: Must be of type url.
. hex: Must be of type hex.email: Must be of type email.
. any: Can be any type.
type的默认类型是字符串类型,而我们的项目value拿到的是Number类型
解决办法:
1、value赋值转换为string类型
2、表单的校验规则增加Number类型
rulePERSON: [
{
type: 'number',
required: true,
message: '项目负责人不能为空',
trigger: 'change'
}
]