Vue Antdv a-form 表单中使用自定义组件,并支持 v-decorator 效验

最后

喜欢的话别忘了关注、点赞哦~

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端校招面试题精编解析大全

// 默认是给 v-model 绑定值使用的

value: {

type: String

// 当通过 a-from 标签包裹时:

// 这个参数是 v-decorator 给子组件传值用的

// 这里不要给默认值, 在 form 下使用会爆警告 Warning: SquareUpload default value can not collect, please use option.initialValue to set default value.

},

// 占位符

placeholder: {

type: String,

default: () => undefined

}

},

computed: {

// 支持 v-model 双向数据绑定,如果有新数据会通过 $emit 一个 input 事件进行修改 v-model 的值,也就是当前 value 值。

// 写法是固定的,vue 自动处理,只管通过 $emit(‘input’, newValue) 抛出去新的值即可。

currentValue: {

get () {

return this.value

},

set (newValue) {

this.$emit(‘input’, newValue)

}

}

},

watch: {

// 监听当前值变化,及时提交给父组件

currentValue: {

deep: true,

immediate: true,

handler: function (newValue) {

// 记录最新的值

this.valuePro = newValue

// 判断当前的 value 值是否为 undefined, 如果是的话不用抛出去,要不然 form 标签就会走效验,并提示对应的错误了

if (newValue !== undefined) {

// v-decorator 会通过 change 事件接受新值

this.$emit(‘change’, newValue)

}

}

}

},

data () {

return {

// 当前页面值,用于做桥梁使用的

// 当前页面操作修改的就是这个值,外部传进来也会更新这个值,它变化了在通过 input change 去更新外部的值

valuePro: undefined

}

},

methods: {

// input 输入

inputChange (e) {

// 传出去最新值,这里只需要通过 change 事件传出去即可,内部的 value 也会发生变化

this.$emit(‘change’, e.target.value)

}

}

}

  • home.vue:进行使用

<a-form

:form=“form”

:label-col=“{ span: 3 }”

:wrapper-col=“{ span: 5 }”

@submit=“handleSubmit”

<a-input

placeholder=“请输入名称”

v-decorator=“[‘name’, { rules: [{ required: true, message: ‘请输入名称!’ }] }]”

/>

<custom-input

placeholder=“请输入简介”

v-decorator=“[‘info’, { rules: [{ required: true, message: ‘请输入名称!’ }] }]”

/>

Submit

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Ant Design Vue 的 `a-form` 单时,自定义校验器可以使用 `validator` 属性来指定。默认情况下,校验器会对单项进行非空判断。如果你想要自定义校验器但不想进行非空判断,可以在校验器函数中手动判断。 例如,你可以定义一个自定义校验器函数来检查输入值是否为正整数: ```javascript const validatePositiveInteger = (rule, value, callback) => { if (value && !/^[1-9]\d*$/.test(value)) { callback(new Error('请输入正整数')) } else { callback() } } ``` 在这个例子中,我们首先判断了输入值是否存在,如果存在,再使用正则达式来判断输入值是否为正整数,如果不是,则调用 `callback` 函数并传递错误信息。如果输入值是正整数,则调用 `callback` 函数并传递一个空参数,示校验通过。 然后,你可以在单项中使用这个自定义校验器,并在 `rules` 属性中指定它: ```html <a-form-item label="正整数"> <a-input v-model:value="value" /> </a-form-item> ``` ```javascript { data() { return { value: '' } }, setup() { const { validatePositiveInteger } = yourValidateFunctions const rules = { value: [ { required: true, message: '请输入值' }, { validator: validatePositiveInteger, message: '请输入正整数' } ] } return { rules } } } ``` 在这个例子中,我们在 `rules` 属性中定义了一个校验规则,其中包括了一个非空校验规则和一个自定义校验规则。当单项的值发生变化时,Ant Design Vue 会自动触发这些校验规则,然后根据校验结果来显示错误信息或者提交单。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值