a-form动态增减表单项

95 阅读1分钟

前言

作为一个半路半出家的小前端,今天碰到这样一个需求: 动态增减表单项目

截屏2024-09-26 15.49.50.png 动态增减的还不是一个操作项,我试了几种方式总是差一点点,不是校验不上就是不校验,这种一般都是绑定问题,于是我去官方找了下文档,文档是有了但是有些看不懂所以造成了还是有上边的问题,最终经过各种尝试完成了这个小小的小需求,其实尝试出来后发现也就是很简单的小事情,只不过自己不懂而已。

接下来说一下在这个过程中需要注意的小点吧。

首先上一下官方代码

<a-form
        ref="formRef"
        name="dynamic_form_nest_item"
        :model="dynamicValidateForm"
        @finish="onFinish"
    >
        <a-space
            v-for="(user, index) in dynamicValidateForm.users"
            :key="user.id"
            style="display: flex; margin-bottom: 8px"
            align="baseline"
        >
            <a-form-item
                :name="['users', index, 'first']"
                :rules="{
  required: true,
  message: 'Missing first name',
}"
            >
                <a-input v-model:value="user.first" placeholder="First Name" />
            </a-form-item>
            <a-form-item
                :name="['users', index, 'last']"
                :rules="{
  required: true,
  message: 'Missing last name',
}"
            >
                <a-input v-model:value="user.last" placeholder="Last Name" />
            </a-form-item>
            <MinusCircleOutlined @click="removeUser(user)" />
        </a-space>
        <a-form-item>
            <a-button type="dashed" block @click="addUser">
                <PlusOutlined />
                Add user
            </a-button>
        </a-form-item>
        <a-form-item>
            <a-button type="primary" html-type="submit">Submit</a-button>
        </a-form-item>
    </a-form>

动态的表单项在a-space标签内我想这个大家都能看出来,主要就是a-form-item如何绑定的问题

主要绑定代码是 :name="['users', index, 'first']" 以为它是随便写的就错了,主要绑定关系就在这! 其中 users必须和你Form modéll里数组的命名是一样的,其次后边first也是和数组模型的属性名称相同

最后 如果这篇文章对你有所帮助,点赞👍收藏🌟支持一下吧,谢谢~

参考资料

Ant Design Vue