当前位置:首页 > VUE

vue分页插件实现

2026-03-29 09:03:24VUE

Vue 分页插件实现方法

使用现有插件(如 vuejs-paginate

安装插件:

npm install vuejs-paginate --save

注册组件:

import Vue from 'vue';
import VuePaginate from 'vuejs-paginate';
Vue.component('paginate', VuePaginate);

模板中使用:

<paginate
  :page-count="totalPages"
  :click-handler="changePage"
  :prev-text="'Prev'"
  :next-text="'Next'"
  :container-class="'pagination'"
/>

数据绑定与方法:

data() {
  return {
    currentPage: 1,
    itemsPerPage: 10,
    totalItems: 100
  };
},
computed: {
  totalPages() {
    return Math.ceil(this.totalItems / this.itemsPerPage);
  }
},
methods: {
  changePage(pageNum) {
    this.currentPage = pageNum;
    // 加载对应页数据
  }
}

自定义分页组件

创建 Pagination.vue 组件:

<template>
  <div class="pagination">
    <button 
      @click="prevPage" 
      :disabled="currentPage === 1"
    >Previous</button>

    <span 
      v-for="page in pages" 
      :key="page"
      @click="goToPage(page)"
      :class="{ active: page === currentPage }"
    >{{ page }}</span>

    <button 
      @click="nextPage" 
      :disabled="currentPage === totalPages"
    >Next</button>
  </div>
</template>

组件逻辑:

props: {
  totalItems: Number,
  itemsPerPage: Number,
  currentPage: Number
},
computed: {
  totalPages() {
    return Math.ceil(this.totalItems / this.itemsPerPage);
  },
  pages() {
    const range = [];
    for (let i = 1; i <= this.totalPages; i++) {
      range.push(i);
    }
    return range;
  }
},
methods: {
  prevPage() {
    this.$emit('page-changed', this.currentPage - 1);
  },
  nextPage() {
    this.$emit('page-changed', this.currentPage + 1);
  },
  goToPage(page) {
    this.$emit('page-changed', page);
  }
}

样式示例:

.pagination {
  display: flex;
  gap: 5px;
}
.pagination span {
  cursor: pointer;
  padding: 5px 10px;
}
.pagination span.active {
  font-weight: bold;
  color: blue;
}

与表格数据结合

分页数据处理:

computed: {
  paginatedData() {
    const start = (this.currentPage - 1) * this.itemsPerPage;
    const end = start + this.itemsPerPage;
    return this.tableData.slice(start, end);
  }
}

高级功能扩展

添加跳转输入框:

<input 
  type="number" 
  v-model.number="inputPage" 
  @keyup.enter="jumpToPage"
  min="1" 
  :max="totalPages"
/>
<button @click="jumpToPage">Go</button>

对应方法:

vue分页插件实现

data() {
  return {
    inputPage: null
  };
},
methods: {
  jumpToPage() {
    if (this.inputPage >= 1 && this.inputPage <= this.totalPages) {
      this.$emit('page-changed', this.inputPage);
    }
  }
}

注意事项

  • 分页组件应尽量保持无状态,通过 props 接收当前页码和总页数
  • 使用 v-ifv-show 控制分页组件显示条件
  • 移动端适配可考虑简化分页按钮数量
  • 大型数据集建议配合后端分页实现

标签: 分页插件
分享给朋友:

相关文章

vue实现功能插件

vue实现功能插件

Vue 插件实现方法 Vue 插件通常用于封装全局功能(如指令、过滤器、混入等),以下是实现 Vue 插件的典型方式: 插件基本结构 const MyPlugin = { instal…

vue  实现分页

vue 实现分页

实现分页功能 在Vue中实现分页功能通常需要结合后端API或前端数据处理。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,所有数据一次性加载到前端后进行分页处理: <tem…

h5实现左右分页

h5实现左右分页

实现左右分页的HTML5方法 在HTML5中实现左右分页效果可以通过多种方式完成,以下是几种常见的方法: 使用CSS Flexbox布局 Flexbox是一种现代的布局方式,可以轻松实现左右分页效果…

jquery 分页

jquery 分页

实现 jQuery 分页的方法 客户端分页实现 使用 jQuery 实现客户端分页的核心思路是通过 JavaScript 控制数据的显示与隐藏。假设有一个包含数据的 HTML 列表或表格: // 分…

vue page 实现分页

vue page 实现分页

实现 Vue 分页功能的方法 使用 Element UI 的分页组件 安装 Element UI 后,可以直接使用 el-pagination 组件实现分页功能。 <template>…

用vue实现分页

用vue实现分页

使用Vue实现分页功能 分页是Web应用中常见的功能,可以通过Vue结合计算属性和事件处理实现。以下是实现分页的核心步骤: 数据准备 定义数据模型,包括当前页码、每页显示数量和总数据列表: dat…