antd Design Vue中关于Form表单 setFieldsValue 的使用

antd Design Vue中关于Form表单 setFieldsValue 的使用

在这里插入图片描述

  • 这次使用了 Form.create 处理表单使其具有自动收集数据并校验的功能,经 Form.create() 包装过的组件会自带this.form 属性,如果使用 template 语法,可以使用 this.$form.createForm(this,options)。
  • 注意:如果不是使用Vue.use(Form)形式注册的Form组件,你需要自行将 f o r m 挂 载 到 V u e 原 型 上 。 V u e . p r o t o t y p e . form挂载到Vue原型上。Vue.prototype. formVueVue.prototype.form = Form。

  • validateFields:校验并获取一组输入域的值与 Error,若 fieldNames 参数为空,则校验全部组件。
    在这里插入图片描述
  • 使用 setFieldsValue 来动态设置其他控件的值。

在这里插入图片描述
可直接将后台获取到的整个数据直接修改,但可能会引起一个字段对不上的错误,比如获取到的数据比表单一开始创建的数据多出几条,只要数据条数对不上就会报这个错,即:其设置的只能是此表单中出现的值,不能多传,否则将会报错:在这里插入图片描述

出现了一个warning警告,虽说不影响程序运行,不过咱还是能不报错和警告就不报错和警告。

解决方法:要么一条一条数据对应分开设置值,要么拿到的数据和表单之前的数据是完全吻合的,不多不少就好了。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
首先,你需要安装 `ant-design-vue` 和 `vue3` 。 ``` npm install ant-design-vue@next npm install vue@next ``` 然后,你可以创建一个表单组件 `Form.vue` : ```vue <template> <a-form :form="form" @submit="handleSubmit"> <slot /> </a-form> </template> <script> import { defineComponent, ref } from 'vue'; import { Form } from 'ant-design-vue'; export default defineComponent({ components: { Form }, props: { initialValues: Object, onFinish: Function, onFinishFailed: Function, }, setup(props, { emit }) { const form = ref(null); const handleSubmit = (e) => { e.preventDefault(); form.value .validateFields() .then((values) => { if (props.onFinish) { props.onFinish(values); } }) .catch((error) => { if (props.onFinishFailed) { props.onFinishFailed(error); } }); }; return { form, handleSubmit, }; }, }); </script> ``` 在这个表单组件,我们使用了 `a-form` 组件和插槽。我们为 `a-form` 组件绑定了 `form` 对象和 `submit` 事件。在组件的 `setup` 函数,我们定义了一个 `form` 的引用,并且定义了一个 `handleSubmit` 函数,用于处理表单的提交事件。 接下来,我们可以创建一个表单项组件 `FormItem.vue` : ```vue <template> <a-form-item :label="label" :name="name" :rules="rules"> <slot /> </a-form-item> </template> <script> import { defineComponent } from 'vue'; import { FormItem } from 'ant-design-vue'; export default defineComponent({ components: { FormItem }, props: { label: String, name: String, rules: Array, }, }); </script> ``` 在这个表单项组件,我们使用了 `a-form-item` 组件和插槽。我们为 `a-form-item` 组件绑定了 `label`、`name` 和 `rules` 属性。 现在,我们可以在 `Form.vue` 组件使用 `FormItem.vue` 组件来创建表单项了: ```vue <template> <Form :form="form" @submit="handleSubmit"> <FormItem label="Username" name="username" :rules="[{ required: true, message: 'Please input your username' }]"> <a-input v-model:value="formData.username" /> </FormItem> <FormItem label="Password" name="password" :rules="[{ required: true, message: 'Please input your password' }]"> <a-input-password v-model:value="formData.password" /> </FormItem> <FormItem> <a-button type="primary" html-type="submit">Submit</a-button> </FormItem> </Form> </template> <script> import { defineComponent, reactive } from 'vue'; import Form from './Form.vue'; import FormItem from './FormItem.vue'; export default defineComponent({ components: { Form, FormItem }, setup() { const formData = reactive({ username: '', password: '', }); const handleSubmit = (values) => { console.log(values); }; return { formData, handleSubmit, }; }, }); </script> ``` 在这个例子,我们创建了两个表单项:用户名和密码。我们使用 `v-model` 指令将表单数据绑定到 `formData` 对象上。我们也定义了一个 `handleSubmit` 函数,在表单提交时输出表单数据。 最后,我们需要在 `main.js` 文件引入 `ant-design-vue` 组件库和 `Form.vue` 组件: ```js import { createApp } from 'vue'; import App from './App.vue'; import Antd from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; import Form from './components/Form.vue'; const app = createApp(App); app.use(Antd); app.component('Form', Form); app.mount('#app'); ``` 现在,我们就可以在 Vue 3 使用 Ant Design Vue 的表单组件了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值