el-element中el-table表格嵌套el-select实现动态选择对应值功能

目录
  • 先看问题还原图:
  • 问题描述:
  • 解决方法:
    • 思路:
    • 代码:
  • 总结:

先看问题还原图:

问题描述:

小编在做需求时,遇到了在el-table表格中加入多条数据,并且每条数据要通过el-select来选取相应的值,做到动态选择。

解决方法:

思路:

  • 最开始,小编的实现效果是左边红色框的效果,选择其中一个时,其他的也对应赋值。
  • 主要是因为el-option的选项都是相同的,v-model 的值也是相同的。
  • 那让每一条 v-model 的值不同不就好了么!!

代码:

html中代码:

<el-table-column label="文档类别" prop="categoryName">
  <template slot-scope="scope">
    <el-select
      :ref="'categoryName' + scope.$index"
      v-model="tableData[scope.$index]['categoryName']"
      placeholder="请选择文档类别"
      clearable
    >
      <el-option :value="tableData[scope.$index]['categoryName']" style="height: auto">
        <el-tree
          :ref="'categoryNameTree' + scope.$index"
          :data="typeList"
          node-key="id"
          :props="typeTreeProps"
          @node-click="getTypeList(scope.$index)"
        >
          <span slot-scope="{ node }">{{ node.label }}</span>
        </el-tree>
      </el-option>
    </el-select>
  </template>
</el-table-column>

 代码解说:

在 < el-table > 中绑定数据 :data="tableData"  tableData 为数组
el-select中

  1. scope.$index  -----  为tableData中每条数据的下标
  2. :ref="'categoryName' + scope.$index"  -----  设置 ref ,用户选择完值后 el-option 自动隐藏
  3. v-model="tableData[scope.$index]['categoryName']"  -----  绑定动态的 v-model ,很重要。要注意的是 tableData[scope.$index] 是通过下标找当数组tableData中当前选择的数据。而这个 categoryName 参数必须是数组 tableData 中存在的。

el-option中

  • :value="tableData[scope.$index]['categoryName']"  -----  与 v-model 相同,绑定动态值

el-tree中

:ref="'categoryNameTree' + scope.$index"  -----  与 el-select 中 ref 相同
@node-click="getTypeList(scope.$index)"  -----  选择数据时触发,传当前元素的下标

data中:

data() {
   return {
     tableData: []  // 接口返回的数据,:data绑定在el-table中
     typeList: [], // 接口返回的数据,展现在el-option中,用el-tree包裹
     typeTreeProps: {
       children: 'children',
       label: 'name'
     },
     categoryName: ''
   }
 }

methods中:

getTypeList(index) {
   // .getCurrentKey()获取到当前要选择节点的key值
   // 使用此方法必须设置 node-key 属性,若没有节点被选中则返回 null
  const nodeId = this.$refs['categoryNameTree' + index].getCurrentKey()
   // .getNode(nodeId) 根据 data 或者 key 拿到 Tree 组件中的 node
  const node = this.$refs['categoryNameTree' + index].getNode(nodeId)
   // 根据index给当前元素的categoryName参数赋值
  this.$set(this.tableData[index], 'categoryName', node.label)
  this.$set(this.tableData[index], 'categoryNo', node.data.docTypeNo)
   // 此时页面上已经可以动态选择
   // 这一步是通过判断当前元素的v-model是否有值来控制el-option是否隐藏
  if (this.tableData[index].categoryName) {
     // .blur()用来隐藏当前展开的下拉选择框
    this.$refs['categoryName' + index].blur()
  }
},

this.$refs['categoryName' + index] 设置动态是因为,在有多条数据时,如果不是动态的,但凡有没有值的选择框,就不会触发。而这样就可以通过index来判断隐藏那条元素。

总结:

遇到新的问题就会有新的知识增加,其实入职后有很多很多值得学习,并且记住的知识,但都因年底的原因,项目要保证封版后bug都解决掉而忙忘掉,翻回来去想记录的时候又不从下手。

到此这篇关于el-element中el-table表格嵌套el-select实现动态选择对应值功能的文章就介绍到这了,更多相关el-table表格动态选择对应值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • element el-table表格的二次封装实现(附表格高度自适应)

    前言 在公司实习使用vue+element-ui框架进行前端开发,使用表格el-table较为多,有些业务逻辑比较相似,有些地方使用的重复性高,如果多个页面使用相同的功能,就要多次重复写逻辑上差不多的代码,所以打算对表格这个组件进行封装,将相同的代码和逻辑封装在一起,把不同的业务逻辑抽离出来.话不多说,下面就来实现一下吧. 一.原生el-tbale代码--简单の封装 这里直接引用官方的基础使用模板,直接抄过来(✪ω✪),下面代码中主要是抽离html部分,可以看出每个el-table-column

  • 关于Element-ui中el-table出现的表格错位问题解决

    目录 前言 1.数据更新后出现的错位问题 1.1 直接在数据赋值后执行doLayout方法 1.2在生命周期updated里执行doLayout方法 2.浏览器窗口大小变化时出现的错位问题 3.当有多个Tab标签时,切换标签出现的错位问题 3.1 在组件守卫beforeRouteEnter里执行doLayout方法 3.2 如果使用了keep-alive,可以在activated里执行doLayout方法 3.3 也可以通过监听路由,在watch里执行doLayout方法 附:解决element

  • VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法

    在开发中,需要表格控件根据浏览器高度进行调整,固定表头,且然后多余的出滚动条,官方给出的: 只要在el-table元素中定义了height属性,即可实现固定表头的表格,而不需要额外的代码. 然后直接上template代码: <template> <el-table :data="tableData3" height="250" border style="width: 100%"> <el-table-column

  • VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip

    ElementUI2.0的表格的扩展: elementUI表格table elementUI文字提示Tooltip 如果要实现鼠标移到表头有注释或者弹框该怎么添加呢? <el-table empty-text="正在加载中..." :data="contentList" style="width: 100%" @sort-change="sort" class="pro-table-item" too

  • VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解

    先看看ElementUI里关于el-table的template数据结构: <template> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="日期" width="180"> </el-table-column> <el-tabl

  • element中form组件prop嵌套属性的问题解决

    目录 Introduction 总结 Introduction 分享今天同事问的一个问题, 下面这段代码会报错,先看代码:重点是el-form-item组件的prop属性 <template> <div id="app"> <el-form label-width="100px" :model="ruleForm" :rules="rules"> <el-form-item v-for

  • jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例

    本文实例讲述了jQuery实现Table表格隔行变色及高亮显示当前选择行效果.分享给大家供大家参考,具体如下: 最近客户要求高亮选择列表的功能,于是顺便做了个,作为记录. 前台代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=

  • vue element 中的table动态渲染实现(动态表头)

    通过在vue中使用element的table表格,实现数据动态渲染,并且动态渲染表头.通过在父组件中引入子组件表格,然后向子组件传递表格数据和表头数据. 子组件table中template模板 <el-table :data="this.tableData" height="400px" max-height="400px" size="small" row-class-name="row" cell

  • Element-UI中关于table表格的那些骚操作(小结)

    最近的项目中使用到element-ui组件库,由于做的是后台管理系统,所以经常需要操作表格,编辑样式的过程中遇到一些问题,官网针对table给出了很多的api,自己可以自定义,基本能满足产品需求,但是没有给出具体的案例,网上的资料也比较简略,这里简单整理下一些常用的操作,如果有类似的功能可以做一个参考. 具体的使用方法还是建议仔细阅读官网-table章节: https://element.eleme.cn/#/zh-CN/component/table#table-column-scoped-s

  • ElementUI中利用table表格自定义表头Tooltip文字提示

    目录 实现效果 ElementUI文档 el-table组件 tooltip组件 render-header绑定的方法 实现效果 ElementUI文档 el-table组件 <el-table-column label="水位高程(m)" header-align="center" align="center"> <el-table-column prop="swlel" label="传感器监测

  • Element实现表格嵌套、多个表格共用一个表头的方法

    一.分析需求 这里先上一张图说明 需求 : 根据后端返回的数据 ( res 是一个数组,它的元素是一个对象,对象里面的 ext 属性是一个对象,它又包含了, default . free 和 pay 三个属性,且这三个都是数组格式.): 渲染出一个这样子的 表格 : res 数据: res 的每一个元素的直接属性 name (即为邮费模板名称,比如成都运费模板), res 的 ext 属性下的三个数组 default . free . pay ,每一个数组要大的一行(这一行中,第一列是运送到的地

  • Element Plus组件Form表单Table表格二次封装的完整过程

    目录 前言 Form表单的封装 简述 正常的使用 开始封装① 开始封装② 开始封装③ 开始封装④ 完整封装代码⑤ 配置项类型文件 配置项文件 form表单组件文件 page-search组件文件 role页面组件文件 结语 Table表格的封装 简述 正常使用 开始封装① 开始封装② 开始封装③ 完整封装代码④ 配置项类型文件 配置项文件 table表单组件文件 page-table组件文件 user页面组件文件 结语 前言 直至今天,看了一下别人写的代码,才发现以前自己写的代码太垃圾,所以在这

  • element table 表格控件实现单选功能

    项目中实现 table 表格控件单选功能,如图: 基本代码如下: 1.template 代码中: <el-table :data="tableData" border stripe ref="tableData" @row-click="singleElection"> <el-table-column label="" width="65"> <template slot-s

  • element中table高度自适应的实现

    1.开发环境 vue+element 2.电脑系统 windows10专业版 3.在开发的过程中,我们经常会使用到 element中的table,但是我们也发现了在table的配置中,只能设置 具体的高度不能设置百分比,怎么实现table高度自适应呢?方法如下: 4.在对应的vue模板中添加如下代码: <el-table :data="tableData" row-key="id" sortable style="width: 96%" :

  • 关于Element-ui中Table表格无法显示的问题及解决

    目录 Element-ui中Table表格无法显示 1.准备工作 2.引用Element-ui官方文档中的Table表格代码 3.启动端口,并在浏览器访问 Element-ui表格不生效问题 原因是 Element-ui中Table表格无法显示 今天项目中需要用到表格,于是就采用了由饿了么前端团队开发的Element-ui + Vue组合. 1.准备工作 使用命令:cnpm i element-ui -S 进行安装Element-ui,安装好了之后,进行如下配置: 这样操作之后,就可以使用Ele

随机推荐