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日

相关文章

  • 如何在vue项目中使用UEditor–plus

    步骤1:安装UEditor 首先,我们需要安装UEditor及其附加组件。你可以通过以下命令来安装UEditor: npm i -S vue-ueditor-plus 这样就将UEditor安装到了你的项目中。 步骤2:在项目中注册组件 现在,我们需要在Vue组件中注册UEditor组件。在你的项目中,你需要创建一个UEditor组件,代码如下: <t…

    Vue 2023年5月27日
    00
  • SpringBoot+VUE实现数据表格的实战

    我来详细讲解“SpringBoot+VUE实现数据表格的实战”的完整攻略。我们将分为以下几个步骤: 搭建前端项目 首先,我们需要在计算机上安装Node.js和Vue Cli脚手架工具。安装完成后,在终端中执行以下命令来创建一个新的Vue.js项目: vue create projectname 其中“projectname”是你的项目的名称。在创建过程中,你…

    Vue 2023年5月27日
    00
  • JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)

    下面是JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)的完整攻略: 首先,我们需要先了解一下正则表达式。正则表达式是一种专门描述字符串特征的方式,可以用来验证输入是否符合标准格式、搜索或替换字符串等。 接下来,我们需要知道匹配URL网址的正则表达式。以下是匹配URL网址的正则表达式,可以匹配www,http开头的一切网址: /^((htt…

    Vue 2023年5月28日
    00
  • vue实现excel表格的导入导出的示例

    当我们需要在前端实现excel表格的导入导出操作时,可以使用vue库提供的一些插件,轻松达到这个目标。接下来,我将详细讲解vue实现excel表格导入导出的完整攻略。 1. 安装依赖 在进行excel表格导入导出操作时,我们需要安装以下几个依赖: npm install xlsx npm install file-saver npm install scri…

    Vue 2023年5月27日
    00
  • 如何修改Vue项目运行的IP和端口

    当我们开发 Vue.js 项目时,默认情况下,项目运行在本地的 IP 地址和端口上。但是有些情况下,我们可能需要修改这些默认设置。下面是详细讲解如何修改 Vue.js 项目运行的 IP 和端口的攻略: 1. 修改 package.json 文件中的 scripts 配置 Vue.js 项目的 package.json 文件中有一项 scripts,其中包含了…

    Vue 2023年5月28日
    00
  • Vue3组合式API之getCurrentInstance详解

    Vue3组合式API之getCurrentInstance详解 前言 getCurrentInstance 是 Vue 3.x 中 Composition API 的一个常用钩子函数,它可以在组件函数内获取当前组件实例的上下文,便于我们使用其它 Composition API。 使用方法 在组件函数内调用 getCurrentInstance 即可获取当前组…

    Vue 2023年5月28日
    00
  • vue 限制input只能输入正数的操作

    下面是详细讲解“vue 限制 input 只能输入正数的操作”的完整攻略: 步骤一:使用 v-model 双向绑定 我们需要使用 v-model 双向绑定来获取 input 中的值,并将其传递给 Vue 实例中的数据。 下面是一个简单的示例代码: <template> <div> <input type="number…

    Vue 2023年5月28日
    00
  • vue学习笔记五:在vue项目里面使用引入公共方法详解

    首先需要明确一下,该攻略是讲述如何在Vue项目中引入公共方法,让这些方法可以在项目的多个地方进行调用。下面按照步骤一一介绍。 步骤一:创建公共方法文件 首先我们需要创建一份公共方法文件,将这些方法封装在一起,供整个项目使用。我们可以在Vue项目的根目录下,创建一个名为utils.js的文件,用于存储公共方法。下面是一个简单的示例: // utils.js /…

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