美文网首页
el-table 实现行自定义点击展开折叠效果

el-table 实现行自定义点击展开折叠效果

作者: 为什么划船不靠桨 | 来源:发表于2023-04-25 16:03 被阅读0次

    最近项目有一个需求,使用el-table显示表格数据,在显示的每一行中都有按钮,点击会展开显示这一行对应的子表数据,然后研究了一下,下面看下实现的方法。

    1.控制展开还是折叠的操作按钮

    <el-table-column label="" width="61">
        <template slot-scope="scope">
            //这里用 expandItem 属性用来存储上一次点击的是哪行数据,以此来判断是展开还是折叠,显示向右或是向下的箭头
            <i :class="expandItem.dictId == scope.row.dictId ? 'el-icon-arrow-down' : 'el-icon-arrow-right'" @click="toogleExpand(scope.row)" style="cursor: pointer;"></i>
        </template>
    </el-table-column>
    

    2.要折叠或展开的内容部分

    <el-table-column type="expand" width="1">
        <template slot-scope="scope">
            <el-table :data="scope.row.caseReportList" style="width:90%">
                <el-table-column prop="dictCode" label="字典编码">
                </el-table-column>
                <el-table-column prop="dictLabel" label="字典标签">
                </el-table-column>
                ...
            </el-table>
        </template>
    </el-table-column>
    

    3.点击展开或折叠按钮执行的方法

    //在 data 中定义一个属性,用来存储上一次点击的位置
    expandItem:{dictId:null},
    
    //实现点击按钮切换展开或折叠的方法
    toogleExpand(row) {
        const _this = this;
        let table = _this.$refs.table;
        
        if(this.expandItem == row){
            //上一次点击和本地点击的是同一行,则折叠该行
            table.toggleRowExpansion(row, false);
            //重置上一次点击的行数据状态
            this.expandItem = {dictId:null};
            return;
        }
         //遍历数组,判断此次点击的是哪一行数据
        _this.tableData.map((item, index) => {
            if (row.dictId != item.dictId) {
                //折叠
                table.toggleRowExpansion(item, false);
            }else{
                //展开
                table.toggleRowExpansion(item, true);
                _this.expandItem = item;
                //这里是我展开行以后,请求的对应行的子表数据请求方法
                _this.requestRowList(row.dictType);
            }
        });
    },
    

    到这里,展开折叠效果就已经轻松实现了。

    相关文章

      网友评论

          本文标题:el-table 实现行自定义点击展开折叠效果

          本文链接:https://www.haomeiwen.com/subject/rycmjdtx.html