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日

相关文章

  • SpringBoot整合OpenCV的实现示例

    下面是SpringBoot整合OpenCV的实现示例的完整攻略: 实现步骤 添加OpenCV的依赖项 在pom.xml文件中添加OpenCV依赖项,可以通过Maven中央库来获取最新的版本: <dependency> <groupId>org.openpnp</groupId> <artifactId>open…

    人工智能概论 2023年5月24日
    00
  • OpenCV实现透视变换矫正

    接下来我来讲解一下利用OpenCV实现透视变换矫正的完整攻略。 什么是透视变换矫正 透视变换是一种将三维空间中的物体映射到二维平面的方式,但因为透视映射效果的限制,会导致图像出现畸变,如角度失真和形状扭曲等。为了解决这个问题,可以使用透视变换矫正技术,通过恢复透视的变换参数来消除这种畸变。 实现步骤 以下是实现透视变换矫正的基本步骤: 提取图像中需要进行透视…

    人工智能概论 2023年5月24日
    00
  • Android开发手机无线调试的方法

    下面是“Android开发手机无线调试的方法”的完整攻略: 准备工作 确保你的Android手机和电脑处于同一个Wi-Fi网络中。 下载并安装Android-SDK(包含Android-Debug-Bridge)和adb。 步骤一:使用USB连接将设备连接到计算机 在第一次连接手机的时候,需要USB线连接电脑。 执行以下命令: $ adb devices 如…

    人工智能概览 2023年5月25日
    00
  • window平台安装MongoDB数据库图文详解

    来为您详细讲解“window平台安装MongoDB数据库图文详解”的完整攻略吧。 前置条件 在开始安装 MongoDB 之前,需要确保满足以下两个前置条件: 你需要一台运行的 Windows 操作系统电脑; 需要下载 MongoDB 的安装文件。 下载 MongoDB 在下载之前,我们需要确认一下系统的位数。请在“计算机”或者“此电脑”的属性中查看系统类型,…

    人工智能概览 2023年5月25日
    00
  • tensorflow 自定义损失函数示例代码

    下面是关于”tensorflow 自定义损失函数示例代码”的完整攻略: 1. 自定义损失函数的介绍 在深度学习中,损失函数是评估模型效果的重要指标之一,它可以用来衡量模型预测结果与真实值之间的差异。在tensorflow中,我们可以使用内置的损失函数,例如MSE、交叉熵等,同时也可以根据自己的需求自定义损失函数。 自定义损失函数可以通过tensorflow框…

    人工智能概论 2023年5月25日
    00
  • 如何利用python web框架做文件流下载的实现示例

    下面是关于如何利用Python Web框架实现文件流下载的攻略。 什么是文件流下载? 文件流下载是指将文件以流的形式传输到客户端,并让客户端直接在浏览器中打开或下载文件,而不是将文件保存在服务端。 Python Web框架实现文件流下载 在Python Web框架中,常用的实现文件流下载的方法是使用HTTP Response对象中提供的StreamingHt…

    人工智能概论 2023年5月25日
    00
  • Windows安装nginx1.10.1反向代理访问IIS网站

    下面是“Windows安装nginx1.10.1反向代理访问IIS网站”的完整攻略及示例说明: 安装nginx1.10.1 从nginx官方网站(http://nginx.org/en/download.html)下载Windows版本的nginx1.10.1; 解压下载的文件到任意一个路径,例如C:\nginx; 进入解压后的目录,双击运行nginx.ex…

    人工智能概览 2023年5月25日
    00
  • 在VSCode中搭建Python开发环境并进行调试

    下面是在VSCode中搭建Python开发环境并进行调试的完整攻略。 1. 安装Python 首先需要先安装Python,可以从官网下载安装包安装,也可以使用包管理器进行安装,这里以在Windows系统下使用官网下载的安装包进行说明。 安装过程中需要注意选择“Add Python 3.x to PATH”选项,这样才能在终端或者VSCode中方便的使用Pyt…

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