vue实现前端分页完整代码

下面是“Vue实现前端分页完整代码”的详细讲解攻略,包括代码示例。

什么是前端分页

前端分页是指在浏览器端进行数据分页处理,采用JavaScript实现。该技术可以减轻服务器的负担,提高网站性能,给用户带来更流畅、更友好的交互体验。

基于Vue的前端分页实现

Vue是一款流行的JavaScript框架,为前端开发提供了快速、简便的构建SPA(单页应用)的方式。下面是基于Vue实现前端分页的完整代码示例:

<div id="app">
  <table>
    <thead>
      <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Age</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="(item, index) in paginatedData" :key="index">
        <td>{{ item.id }}</td>
        <td>{{ item.name }}</td>
        <td>{{ item.age }}</td>
      </tr>
    </tbody>
  </table>
  <div>
    <button :disabled="currentPage === 1" @click="currentPage--">上一页</button>
    <span>{{ currentPage }}</span>
    <button :disabled="currentPage === totalPages" @click="currentPage++">下一页</button>
  </div>
</div>
new Vue({
  el: '#app',
  data: {
    data: [
      { id: 1, name: 'Alice', age: 18 },
      { id: 2, name: 'Bob', age: 20 },
      { id: 3, name: 'Charlie', age: 25 },
      { id: 4, name: 'David', age: 30 },
      { id: 5, name: 'Eva', age: 35 },
      { id: 6, name: 'Frank', age: 40 },
      { id: 7, name: 'Gina', age: 45 },
      { id: 8, name: 'Harry', age: 50 }
    ],
    itemsPerPage: 3, // 每页显示的数据量
    currentPage: 1 // 当前页码
  },
  computed: {
    // 获取当前页应该显示的数据
    paginatedData () {
      const startIndex = (this.currentPage - 1) * this.itemsPerPage;
      const endIndex = startIndex + this.itemsPerPage;
      return this.data.slice(startIndex, endIndex);
    },
    // 获取总页数
    totalPages () {
      return Math.ceil(this.data.length / this.itemsPerPage);
    }
  }
})

上述代码使用Vue框架实现了前端分页功能。其中,data数组存储了原始数据,itemsPerPage定义了每页显示的数据量,currentPage表示当前页码。通过计算属性paginatedData获取当前页应该显示的数据,通过计算属性totalPages获取总页数。

页面中,使用v-for指令遍历每一页数据,currentPagetotalPages控制页面呈现的页码。点击“上一页”和“下一页”按钮,可以切换到前一页和后一页数据。

示例说明

示例1:基于axios异步获取数据

new Vue({
  el: '#app',
  data () {
    return {
      data: [],
      itemsPerPage: 10,
      currentPage: 1
    }
  },
  mounted () {
    axios.get('/api/data')
      .then(response => {
        this.data = response.data;
      })
      .catch(error => {
        console.log(error);
      });
  },
  computed: {
    paginatedData () {
      const startIndex = (this.currentPage - 1) * this.itemsPerPage;
      const endIndex = startIndex + this.itemsPerPage;
      return this.data.slice(startIndex, endIndex);
    },
    totalPages () {
      return Math.ceil(this.data.length / this.itemsPerPage);
    }
  }
})

该示例中,使用axios库异步获取数据,然后实现分页展示。其中,mounted生命周期函数在组件挂载时触发,异步获取数据后将其保存到data中。由于数据通常很大,可能需要分页展示,页面中的其它部分可以按照前端分页的方式显示数据。

示例2:通过搜索实现过滤

<div id="app">
  <input type="text" v-model="searchKeyword" placeholder="Search...">
  <table>
    <thead>
      <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Age</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="(item, index) in paginatedData" :key="index">
        <td>{{ item.id }}</td>
        <td>{{ item.name }}</td>
        <td>{{ item.age }}</td>
      </tr>
    </tbody>
  </table>
  <div>
    <button :disabled="currentPage === 1" @click="currentPage--">上一页</button>
    <span>{{ currentPage }}</span>
    <button :disabled="currentPage === totalPages" @click="currentPage++">下一页</button>
  </div>
</div>
new Vue({
  el: '#app',
  data () {
    return {
      data: [
        { id: 1, name: 'Alice', age: 18 },
        { id: 2, name: 'Bob', age: 20 },
        { id: 3, name: 'Charlie', age: 25 },
        { id: 4, name: 'David', age: 30 },
        { id: 5, name: 'Eva', age: 35 },
        { id: 6, name: 'Frank', age: 40 },
        { id: 7, name: 'Gina', age: 45 },
        { id: 8, name: 'Harry', age: 50 }
      ],
      itemsPerPage: 3,
      currentPage: 1,
      searchKeyword: ''
    }
  },
  computed: {
    // 获取满足搜索条件的数据
    filteredData () {
      const result = this.data.filter(item => {
        return item.name.indexOf(this.searchKeyword) !== -1 ||
          item.age.toString().indexOf(this.searchKeyword) !== -1;
      })
      return result;
    },
    // 获取当前页应该显示的数据
    paginatedData () {
      const startIndex = (this.currentPage - 1) * this.itemsPerPage;
      const endIndex = startIndex + this.itemsPerPage;
      return this.filteredData.slice(startIndex, endIndex);
    },
    // 获取总页数
    totalPages () {
      return Math.ceil(this.filteredData.length / this.itemsPerPage);
    }
  }
})

该示例实现了一个搜索框,可以按照姓名和年龄进行搜索,然后按照前端分页的方式展示搜索结果。通过计算属性filteredData过滤不满足搜索条件的数据,然后在paginatedData中进行分页展示。

以上就是基于Vue实现前端分页完整代码的攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue实现前端分页完整代码 - Python技术站

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

相关文章

  • Golang 标准库 tips之waitgroup详解

    Golang 标准库 tips之waitgroup详解 在Go语言中,使用goroutine进行并发编程是一种十分高效的方式。但是在多个goroutine同时处理任务的时候,如果不加以协调,就会出现race condition等问题。这时候,我们就需要使用WaitGroup来进行协调操作。 为什么需要WaitGroup 在多个goroutine同时运行的时候…

    人工智能概览 2023年5月25日
    00
  • 基于Java编写一个简单的风控组件

    讲解”基于Java编写一个简单的风控组件”的完整攻略,以下是几个步骤: 步骤一:定义风险规则及规则引擎 首先,需要确定风控规则,比如用户账户余额低于某个阈值,活动参与次数超过限制等。然后,需要选择一个规则引擎来支持这些规则,这里推荐使用Drools作为规则引擎,它支持基于规则的编程,提供了强大的规则匹配和执行引擎。 步骤二:编写规则 在使用Drools之前,…

    人工智能概论 2023年5月25日
    00
  • Node.js使用Express.Router的方法

    使用 Express.Router 可以帮助我们更加有效地管理我们的路由逻辑,将不同的路由划分到不同的模块中,使得程序结构更加清晰。下面是使用 Express.Router 的方法: 1. 创建一个 Router 对象 我们首先需要通过 Express.Router() 方法来创建一个新的 Router 对象,然后可以使用 Router 对象上的方法来定义我…

    人工智能概论 2023年5月25日
    00
  • Shell实现多级菜单系统安装维护脚本实例分享

    关于“Shell实现多级菜单系统安装维护脚本实例分享”的攻略,我将从以下几个方面进行详细讲述: 安装Shell 首先,要实现多级菜单系统安装维护脚本,需要安装Shell,Shell操作系统提供了很多有用的指令和功能,而安装Shell有很多种方式,因此前置条件应是你已经成功安装了Shell。如果你尚未安装Shell,请通过相关渠道进行安装。 编写Shell脚本…

    人工智能概览 2023年5月25日
    00
  • Mongodb聚合函数count、distinct、group如何实现数据聚合操作

    MongoDB是目前流行的非关系型数据库之一,在数据聚合操作中,使用其提供的聚合函数可以轻松实现各种聚合操作。本文将详细讲解 MongoDB 聚合函数 count、distinct、group 的使用方法,包括语法和示例。 count函数 count函数用于统计集合中满足条件的文档数量。语法如下: db.collection.count(query, opt…

    人工智能概论 2023年5月25日
    00
  • java动态代理(jdk与cglib)详细解析

    Java动态代理(JDK与CGLIB)详细解析 什么是动态代理 代理模式是一种非常常见的设计模式,其核心思想是为其他对象提供一个代理对象来控制对这个对象的访问。静态代理必须手动编写代理类,而动态代理则是在运行期动态生成代理类。 JDK动态代理 JDK动态代理是Java官方提供的动态代理实现方式,它是基于反射机制实现的。JDK动态代理需要实现Invocatio…

    人工智能概览 2023年5月25日
    00
  • Python实现判断一行代码是否为注释的方法

    判断一行代码是否为注释需要根据代码中的注释符及其在代码中的位置来进行判断。下面是判断一行代码是否为注释的方法。 方法1:判断首字符是否为注释符 一行代码如果是注释行,则通常情况下其首字符都为注释符号。Python中的注释符号是井号(#)。 在Python中,如果一行代码的首字符为井号(#),则该行代码为注释。反之,如果一行代码的首字符不为#,则该行代码为非注…

    人工智能概论 2023年5月24日
    00
  • MySQL 分表分库怎么进行数据切分

    MySQL 分库和分表的目的是将数据切分存储在不同的服务器或数据库或表中,以达到提高系统的性能和可扩展性的效果。以下是 MySQL 分表和分库进行数据切分的完整攻略: 分库分表数据切分策略 水平分表 水平分表是将一张表的数据按照指定的规则划分到多个表中,如按照某个字段的值的范围进行划分,实现数据的分散。例如,对于一个用户表,可以将其按照用户 ID 值的范围分…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部