vue如何基于el-table实现多页多选及翻页回显过程

实现多页多选及翻页回显的关键在于要在不同页之间共享数据。Vue.js提供了一些辅助方法来进行数据处理和页面渲染。我们可以使用Vue.js的计算属性和方法来实现该功能。

步骤一:设置选中项和分页

首先,我们需要在Vue实例中通过数据来记录选中的项和当前页数,具体代码如下:

<template>
  <el-table
    :data="tableData"
    v-loading="loading"
    :row-key="row => row.id"
    :columns="columns"
    @selection-change="handleSelectionChange">
  </el-table>
  <el-pagination v-model="currentPage" :page-size="pageSize" :total="total"></el-pagination>
</template>

<script>
export default {
  data () {
    return {
      tableData: [], // data for el-table
      columns: [], // columns for el-table
      loading: false,
      currentPage: 1, // 当前页数
      pageSize: 20, // 每页数量
      total: 0, // 总数
      selections: [] // 当前页已选项
    }
  },

  ...

在el-table中,我们使用@selection-change事件来监听选中项的变化,在每次变化时记录下当前页已选项。当页面切换时,我们需要根据当前页数来切换选中项。为了方便起见,我们可以通过计算属性来自动计算当前页的数据和已选项:

computed: {
  // 当前页的数据
  currentPageData () {
    const start = (this.currentPage - 1) * this.pageSize
    const end = start + this.pageSize
    return this.tableData.slice(start, end)
  },
  // 当前页选中项
  currentSelections () {
    return this.selections.filter(item => this.currentPageData.some(row => row.id === item.id))
  }
},

步骤二:渲染选中项

在el-table中,默认情况下,选中的行将突出显示,但是,由于我们需要支持多页选中项,因此我们需要在每行的第一列添加一个复选框来显示已选状态,并实现多选功能。为此,我们需要通过slot-scope来自定义插槽,并添加一个<el-checkbox>来实现选中状态。具体代码如下:

<el-table-column width="55" type="selection">
  <template slot-scope="scope">
    <el-checkbox v-model="scope.row._checked" @change="changeSelection"></el-checkbox>
  </template>
</el-table-column>

这里的v-model绑定了每行的选中状态,@change事件监听选中状态变化,我们可以在该事件中实时更新选中项的状态。

步骤三:翻页回显

最后,我们需要处理翻页回显的功能。当用户选择项跨越多页时,我们需要在切换页面时保持选中状态。为此,我们可以在currentPage变化时更新当前页已选项。具体代码如下:

watch: {
  currentPage (newVal) {
    // 选中项回显
    this.selections = [...this.selections.filter(item => this.currentPageData.some(row => row.id === item.id)), ...this.currentSelections]
  }
},

这里的watch监听了currentPage的变化。当变化时,我们首先过滤出当前页已选项中已经被选中的选项,然后将它们合并到所有选中项中,以实现选中状态的保持。

示例说明

示例一:基于el-table的多页多选及翻页回显

基于上述步骤,我们可以实现一个基于el-table的多页多选及翻页回显示例。该示例支持多页选中项,翻页回显及批量删除功能。你可以在以下链接中查看完整代码:

https://github.com/Hanqing1996/vue-el-table-pagination-demo

示例二:基于el-table的远程数据分页及多选

在实际项目中,我们通常需要从远程服务器获取数据并进行分页处理。基于上述步骤,我们可以实现一个远程数据分页及多选的示例。该示例支持每页选择数量及分页展示功能,并且通过发起AJAX请求来实现数据的获取和分页。你可以在以下链接中查看完整代码:

https://github.com/Hanqing1996/vue-el-table-axios-pagination-demo

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue如何基于el-table实现多页多选及翻页回显过程 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • SpringBoot+Vue.js实现前后端分离的文件上传功能

    以下是”SpringBoot+Vue.js实现前后端分离的文件上传功能”的完整攻略: 1. 前置条件 已安装好Java开发环境和Maven构建工具 已创建好一个基于SpringBoot的Web项目 已安装好Vue.js前端框架 2. 实现后端文件上传功能 2.1. 添加Multipart依赖 在项目的pom.xml文件中添加Multipart依赖: <…

    Vue 2023年5月28日
    00
  • 解决Babylon.js中AudioContext was not allowed to start异常问题

    在Babylon.js中播放音频时,有时会出现 “AudioContext was not allowed to start” 异常。这是由于浏览器启用了自动播放策略,导致无法正常启动AudioContext造成的。解决方法是在用户的交互行为中启动AudioContext。下面是解决这个问题的完整攻略: 1. 检查浏览器设置 首先,我们需要检查浏览器的设置,…

    Vue 2023年5月28日
    00
  • Axios在vue项目中的封装步骤

    Axios是一个基于promise的HTTP客户端,可用于在浏览器和Node.js中发送数据请求。在Vue项目中使用Axios进行数据请求可以方便快捷地实现前后端交互。下面我们将介绍Axios在Vue项目中的封装步骤。 1. 安装Axios 打开终端,通过npm安装Axios: npm install axios 2. 创建Axios服务 在Vue项目中,可…

    Vue 2023年5月28日
    00
  • 在vue里使用codemirror遇到的问题

    下面是关于在Vue中使用CodeMirror遇到的问题的完整攻略: 问题描述 在Vue项目中,想要集成CodeMirror来实现代码编辑功能,但是在实际过程中可能会遇到以下问题: CodeMirror在Vue组件中无法正常显示; CodeMirror在Vue组件中无法获取焦点。 接下来,我们将分别讲解如何解决这两个问题。 问题一:CodeMirror无法正常…

    Vue 2023年5月27日
    00
  • 用vue设计一个日历表

    对于如何用vue设计一个日历表,一般可以分为以下几个步骤: 1. 确定日历的设计需求及所需组件 首先,我们需要确定本次设计所需实现的功能以及对应的组件。一般来说,日历表需要实现以下功能: 展示当前月份的日期信息 允许用户切换月份和年份 支持选择日期并高亮显示 可以展示一些日历上的重要日子,如节假日或者自定义事件等 根据上述需求,我们可以确定需要用到一些基本的…

    Vue 2023年5月29日
    00
  • vue编译打包本地查看index文件的方法

    当我们使用Vue进行项目开发时,我们需要编译打包项目以便在浏览器环境中运行。但是,对于有些开发者来说,直接在浏览器中查看页面效果并不够方便,因此我们需要一种方法能够让我们在本地直接查看打包后的index文件效果。下面是具体的步骤: 步骤一:安装http-server http-server是一个简单的零配置命令行HTTP服务器,它可以让我们在本地快速启动静态…

    Vue 2023年5月28日
    00
  • Vue3使用时应避免的10个错误总结

    下面就是关于“Vue3使用时应避免的10个错误总结”的完整攻略。 1. 避免在setup函数之外使用响应式数据 setup函数之外的代码主要是为了定义变量或者引用组件。我们还需要明确的一点就是,setup函数是在组件实例被创建之前被调用的,所以setup函数外部的代码是在它之前执行的。如果你使用了响应式数据去创建变量或者引用组件,就会出现bug。 示例: c…

    Vue 2023年5月29日
    00
  • 详解Vuex的属性

    下面就详细讲解一下Vuex的属性: Vuex的属性 Vuex是一个专为Vue.js应用程序开发的状态管理模式,它集中管理Vue应用程序中的所有组件的状态。在Vuex中,有几个重要的属性:state、mutations、actions、getters和modules,下面将逐一进行详解。 state state是Vuex中存储响应式数据的地方,唯一的数据源。当…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部