ant-desigin-vue 中 form 表单的使用

父组件信息通过 ref 绑定 userEdit 节点上。

<!-- 修改用户 -->
<user-edit
  ref="userEdit"
  @close="handleUserEditClose"
  @success="handleUserEditSuccess"
  :userEditVisiable="userEdit.visiable">
</user-edit>

edit (record) {
  this.$refs.userEdit.setFormValues(record)
  this.userEdit.visiable = true
},

子组件如何接收数据呢?

setFormValues ({...user}) {
  console.log(user)
},

setFieldsValue:设置一组输入控件的值,给表单赋值。

setFormValues ({...user}) {
  this.userId = user.userId
  let fields = ['realName', 'username', 'status', 'address', 'description']
  Object.keys(user).forEach((key) => {
    if (fields.indexOf(key) !== -1) {
      this.form.getFieldDecorator(key)
      let obj = {}
      obj[key] = user[key]
      this.form.setFieldsValue(obj)
    }
  })
  if (user.roleId) {
    this.form.getFieldDecorator('roleId')
    let roleArr = user.roleId.split(',')
    // 给表单赋值
    this.form.setFieldsValue({'roleId': roleArr})
  }
},

createForm:创建表单。获取表单的数据是使用 v-decorator 的方式去给每个项去注册,这样才能通过组件去拉取表单的数据,同时对必填项做校验。

<a-form :form="form">
  <a-form-item label='账号' v-bind="formItemLayout">
    <a-input readOnly v-decorator="['username']"/>
  </a-form-item>
  <a-form-item label='角色' v-bind="formItemLayout">
    <a-select
      :allowClear="true"
      style="width: 100%"
      v-decorator="[
        'roleId',
        {rules: [{ required: true, message: '请选择角色' }]}
      ]">
      <a-select-option v-for="r in roleData" :key="r.roleId.toString()">{{r.roleName}}</a-select-option>
    </a-select>
  </a-form-item>
</a-form>

export default {
  data () {
    return {
      form: this.$form.createForm(this), // 只有这样注册后,才能通过表单拉取数据
    }
  },
}

validateFields:校验并获取一组输入域的值与 Error,若 fieldNames 参数为空,则校验全部组件。

getFieldsValue:获取一组输入控件的值,如不传入参数,则获取全部组件的值。

// 拉取表单数据的方法
this.form.validateFields((err, values) => {
  if (!err) {
    let user = this.form.getFieldsValue()    
  }
})

resetFields:重置一组输入控件的值(为 initialValue)与状态,如不传入参数,则重置所有组件

this.form.resetFields()

initialValue:子节点的初始值,类型、可选值均由子节点决定。

<a-input v-decorator="['username',{rules: [{ required: true, message: '账号不能为空'}], initialValue: 'admin'}]"/>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 ant-design-vue 提交一个表单,您可以使用 `Form` 组件和 `Form.Item` 组件。以下是一个简单的示例: ```html <template> <a-form ref="form" :model="formData" :rules="formRules" @submit="handleSubmit"> <a-form-item label="Name" :colon="false" prop="name"> <a-input v-model="formData.name" /> </a-form-item> <a-form-item label="Email" :colon="false" prop="email"> <a-input v-model="formData.email" /> </a-form-item> <a-form-item> <a-button type="primary" html-type="submit">Submit</a-button> </a-form-item> </a-form> </template> <script> export default { data() { return { formData: { name: '', email: '', }, formRules: { name: [{ required: true, message: 'Please enter your name', trigger: 'blur' }], email: [ { required: true, message: 'Please enter your email', trigger: 'blur' }, { type: 'email', message: 'Please enter a valid email address', trigger: 'blur' }, ], }, }; }, methods: { handleSubmit() { this.$refs.form.validate(valid => { if (valid) { // Submit the form data console.log(this.formData); } else { console.log('Form validation failed'); return false; } }); }, }, }; </script> ``` 在上面的代码,我们首先创建了一个 `Form` 组件,并将其绑定到 `formData` 数据属性和 `formRules` 数据属性。然后,我们在表单添加了两个 `Form.Item` 组件,分别用于输入名称和电子邮件地址。最后,我们添加了一个提交按钮,并将其绑定到 `handleSubmit` 方法。 在 `handleSubmit` 方法,我们首先使用 `this.$refs.form.validate` 方法验证表单数据。如果表单数据有效,则提交表单数据,否则输出一个错误消息。 请注意,我们在 `a-button` 组件上使用 `html-type="submit"` 属性来指定按钮类型为提交按钮。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值