vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vue过滤表格数据导致的索引错乱

vue过滤表格数据导致的索引错乱问题及解决

作者:莫物

这段描述主要讨论了在表单操作中如何正确处理表格数据的筛选和编辑,强调保持数据源完整性和操作准确性的关键,关键词包括:数据源完整性和操作准确性

问题描述

在一个表单中有一个表格需要操作筛选和编辑

我用tableData.filter(filterEditTable)过滤了表格数据,在过滤后的表格数据中进行编辑或删除操作时,直接使用过滤后数组的索引(filterEditTable 的索引)会导致操作错误,因为这个索引并不对应原始数据源(tableData)的位置

解决方案

保持数据源(tableData)的完整性,只通过控制表格的显示属性来过滤,处理“编辑/删除”和“筛选”共存场景。

实现

<el-table 
    :data="tableData" 
    :row-class-name="tableRowClassName">
    <!-- 列定义... -->
</el-table>
methods: {
    // 动态添加类名
    tableRowClassName({row}) {
        // 如果不满足筛选条件,添加 'hidden-row' 类
        if (!row.name.includes(this.searchKeyword)) {
            return 'hidden-row';
        }
        return '';
    },
    handleDelete(index) {
        // 这里的 index 直接对应 form.detailsList 的索引,非常安全!
        this.tableData.splice(index, 1);
    }
}
/* 隐藏行的 CSS */
/* 必须加 ::v-deep (或者 /deep/ 或 >>>) */
::v-deep .el-table .hidden-row {
    display: none !important; /* 加上 !important 强制覆盖 */
}

这样做的好处

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文