Vue-结合Element UI实现表单动态增删行

背景

​ 有时候表单中的字段、或者某一个字段中以JSON传输到后端处理,这时候对其变量赋值就存在不确定性,值可能一个、可能两个、可能多个,具体根据使用者具体场景决定,这时候就需要采用动态增删来处理。

效果预览

​ 比如我这里做了一个管理系统对接友盟推送消息的功能,这里的扩展参数就存在不确定性,根据不同的推送模式、不同的打开操作和内容、会产生不同的扩展参数,这里就采用动态增删模式来解决。(当然,如果功能都是固定的,也可以根据你们自己不同的操作确定下来参数把表单写死,但是不建议)。

image-20210925114245963

具体实现
Vue部分
<el-form-item label="扩展参数:">
  <div>
    <el-button size="mini" type="text" icon="el-icon-plus" @click="addExtraInput">添加一行</el-button>
    <el-popover
        placement="top-start"
        title=""
        width="500"
        trigger="hover">
      <el-alert
          title="打开APP相关操作指南"
          type="info"
          :closable="false">
        <template slot='title'>
					<!--这里面是对不同场景下扩展参数的自定义说明-->
        </template>
      </el-alert>
      <i slot="reference" style="margin-left: 5px" class="el-icon-info"></i>
    </el-popover>
  </div>
  <div v-if="extraList && extraList.length > 0">
    <el-alert title="" type="info" :closable="false" :show-icon="false">
      <template slot='title'>
				<!--遍历数组,根据不同的结构,展现表单样式、一行单个或者多个输入框,具体看自己实现,这里是一行对应一个键值对-->
        <div v-for="(item,index) in extraList" :key="index" style="margin-top: 5px">
          <el-input style="width: 218px" v-model="item.key" placeholder="key"></el-input>
          <el-input style="width: 218px" v-model="item.value" placeholder="value"></el-input>
          <el-button size="mini" type="text" icon="el-icon-delete" style="color: #F56C6C"
                     @click="delExtraInput(index)">删除
          </el-button>
        </div>
      </template>
    </el-alert>
  </div>
</el-form-item>
Js部分
/** 添加一行键值对 */
addExtraInput() {
  this.extraList.push({ 'key': '', 'value': '' })
}

/** 根据数组索引删除一行键值对 */
delExtraInput(index) {
  this.extraList.splice(index, 1)
}

/** 将参数列表提取出来 转换为对象形式 */
extraListToData() {
  let extraList = this.extraList
  if (!extraList || extraList.length < 1) {
    return {}
  }
  let extraData = {}
  for (let item of extraList) {
    let key = item.key
    let value = item.value
    if (key && value) {
      extraData[key] = value
    }
  }
  return extraData
}

至此就完成了一个简单的动态表单的实现,将需要的数据结构处理后传给后端即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Vue框架结合Element UI组件来实现查询表单Vue一个用于构建用户界面的渐进式JavaScript框架,而Element UI一个基于Vue的组件库,提供了丰富的UI组件和样式。 首先,你需要安装VueElement UI。可以通过npm或者yarn来进安装。 ```shell npm install vue npm install element-ui ``` 接下来,在你的Vue项目,你需要在入口文件引入VueElement UI,并注册Element UI的组件。 ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 然后,你可以在你的组件使用Element UI的组件来构建查询表单。例如,你可以使用`el-form`和`el-input`组件来创建一个简单的查询表单。 ```html <template> <div> <el-form :model="form" label-width="80px"> <el-form-item label="关键词"> <el-input v-model="form.keyword"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">查询</el-button> </el-form-item> </el-form> </div> </template> <script> export default { data() { return { form: { keyword: '' } } }, methods: { submitForm() { // 在这里处理表单提交逻辑 } } } </script> ``` 以上代码展示了一个简单的查询表单,包含一个输入框和一个查询按钮。你可以根据自己的需求进组件的选择和配置,以实现更复杂的查询功能。 希望这个例子能帮助你开始使用Vue框架结合Element UI组件来实现查询表单。如果你有任何其他问题,请随时提问!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值