0


vue2 elementui 封装一个动态表单复杂组件

封装一个动态表单组件在 Vue 2 和 Element UI 中需要考虑到表单字段的动态添加、删除以及验证等复杂功能。下面是一个简单的例子,展示如何创建一个可以动态添加和删除字段的表单组件。

首先,你需要安装并引入 Element UI:

bash
复制
npm install element-ui --save
然后,在你的 Vue 组件中引入 Element UI 的相关组件,并创建一个 DynamicForm.vue 组件:

  1. <template>
  2. <el-form :model="form" ref="dynamicForm" label-width="120px">
  3. <div v-for="(item, index) in formItems" :key="index">
  4. <el-form-item
  5. :label="item.label"
  6. :prop="`formItems[${index}].value`"
  7. :rules="item.rules"
  8. >
  9. <el-input v-if="item.type === 'text'" v-model="item.value"></el-input>
  10. <!-- 这里可以添加其他类型的输入组件,比如 el-select, el-date-picker 等 -->
  11. </el-form-item>
  12. <el-button type="danger" @click="removeField(index)">删除</el-button>
  13. </div>
  14. <el-button type="primary" @click="addField">添加字段</el-button>
  15. <el-form-item>
  16. <el-button type="primary" @click="submitForm">提交</el-button>
  17. </el-form-item>
  18. </el-form>
  19. </template>
  20. <script>
  21. export default {
  22. name: 'DynamicForm',
  23. data() {
  24. return {
  25. form: {
  26. formItems: [], // 动态表单字段数组
  27. },
  28. fieldTypes: ['text'], // 可用的字段类型
  29. };
  30. },
  31. methods: {
  32. addField() {
  33. this.form.formItems.push({
  34. type: 'text', // 默认的字段类型
  35. label: '新字段',
  36. value: '',
  37. rules: [
  38. { required: true, message: '请输入值', trigger: 'blur' },
  39. ],
  40. });
  41. },
  42. removeField(index) {
  43. this.form.formItems.splice(index, 1);
  44. },
  45. submitForm() {
  46. this.$refs.dynamicForm.validate((valid) => {
  47. if (valid) {
  48. alert('提交成功!');
  49. // 在这里处理表单的提交逻辑,例如发送请求到后端
  50. } else {
  51. console.log('表单验证失败!');
  52. return false;
  53. }
  54. });
  55. },
  56. },
  57. };
  58. </script>
  59. <style scoped>
  60. /* 你可以在这里添加一些自定义的样式 */
  61. </style>

本文转载自: https://blog.csdn.net/gxdzi/article/details/136561732
版权归原作者 A 风 所有, 如有侵权,请联系我们删除。

“vue2 elementui 封装一个动态表单复杂组件”的评论:

还没有评论