Vue Element UI 实现动态表单

 
更多

介绍

在前端开发中,经常会遇到需要动态生成表单的需求。Vue 是一套用于构建用户界面的渐进式框架,而 Element UI 是基于 Vue.js 的一套桌面端组件库。结合 Vue 和 Element UI,我们可以很方便地实现动态表单的功能,并且还能够实现新增行、删除行、动态表单验证以及提交功能。

实现步骤

安装依赖

首先,我们需要安装 Vue 和 Element UI 的依赖,在你的项目根目录下执行以下命令:

# 安装 Vue
npm install vue

# 安装 Element UI
npm install element-ui

创建表单组件

接下来,我们需要创建一个表单组件,用于动态生成表单。在你的项目中创建一个名为 DynamicForm.vue 的文件,并添加以下代码:

<template>
  <div>
    <el-button @click="addRow">新增行</el-button>
    <el-button @click="deleteRow">删除行</el-button>
    <el-button @click="submit">提交</el-button>
    <el-form :model="form" :rules="rules" ref="form" label-width="100px">
      <el-table :data="form" style="width: 100%">
        <el-table-column
          prop="name"
          label="名称"
          width="180">
          <template slot-scope="{row}">
            <el-form-item :prop="'name.' + row.index + '.value'" :rules="[{ required: true, message: '请输入名称' }]">
              <el-input v-model="row.name.value"></el-input>
            </el-form-item>
          </template>
        </el-table-column>
        <el-table-column
          prop="age"
          label="年龄"
          width="180">
          <template slot-scope="{row}">
            <el-form-item :prop="'age.' + row.index + '.value'" :rules="[{ required: true, message: '请输入年龄' }]">
              <el-input v-model="row.age.value"></el-input>
            </el-form-item>
          </template>
        </el-table-column>
      </el-table>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      form: [
        { 
          name: { value: '' }, 
          age: { value: '' } 
        }
      ],
      rules: {
        name: [
          { required: true, message: '请输入名称', trigger: 'blur' }
        ],
        age: [
          { required: true, message: '请输入年龄', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    addRow() {
      this.form.push({ 
        name: { value: '' },
        age: { value: '' } 
      });
    },
    deleteRow() {
      if (this.form.length > 1) {
        this.form.pop();
      }
    },
    submit() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          // 提交表单逻辑
        } else {
          // 验证未通过提示
        }
      });
    }
  }
}
</script>

配置路由和组件

在你的项目中配置路由和组件,将 DynamicForm.vue 组件配置到相应的路由中。

使用动态表单组件

在你的项目中使用动态表单组件,只需要在需要的地方添加 <dynamic-form></dynamic-form> 即可。

<template>
  <div>
    <dynamic-form></dynamic-form>
  </div>
</template>

<script>
import DynamicForm from './DynamicForm.vue';

export default {
  components: {
    DynamicForm
  }
}
</script>

总结

通过结合 Vue 和 Element UI,我们很方便地实现了动态表单的功能。使用 Element UI 的表格和表单组件,配合 Vue 的数据双向绑定和表单验证功能,实现了新增行、删除行、动态表单验证以及提交功能。当然,根据实际需求,我们还可以进一步扩展和优化这个动态表单组件,使其更加符合我们的业务需求。

以上就是基于 Vue 和 Element UI 实现动态表单的简单示例。通过这个示例,希望能够帮助到大家快速掌握动态表单的实现方法。如果对于 Vue 或 Element UI 有任何疑问或想探讨更多相关的话题,欢迎在评论区留言。谢谢阅读!

打赏

本文固定链接: https://www.cxy163.net/archives/9393 | 绝缘体

该日志由 绝缘体.. 于 2018年05月10日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Vue Element UI 实现动态表单 | 绝缘体
关键字: , , , ,

Vue Element UI 实现动态表单:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter