当前位置:首页 > VUE

vue中实现翻页功能

2026-01-22 21:05:15VUE

使用 v-pagination 组件

Vue 的 v-pagination 组件(来自 Vuetify)提供了一种简单的方式实现翻页功能。安装 Vuetify 后,可以直接使用该组件。

<template>
  <v-pagination
    v-model="currentPage"
    :length="totalPages"
    @input="handlePageChange"
  ></v-pagination>
</template>

<script>
export default {
  data() {
    return {
      currentPage: 1,
      totalPages: 10,
    };
  },
  methods: {
    handlePageChange(page) {
      this.currentPage = page;
      // 触发数据加载逻辑
      this.loadData();
    },
    loadData() {
      // 根据 currentPage 加载对应页的数据
      console.log(`Loading data for page ${this.currentPage}`);
    },
  },
};
</script>

自定义翻页组件

如果需要更灵活的翻页功能,可以自定义一个翻页组件。

vue中实现翻页功能

<template>
  <div class="pagination">
    <button 
      @click="goToPage(currentPage - 1)" 
      :disabled="currentPage === 1"
    >
      上一页
    </button>
    <span>当前页: {{ currentPage }} / {{ totalPages }}</span>
    <button 
      @click="goToPage(currentPage + 1)" 
      :disabled="currentPage === totalPages"
    >
      下一页
    </button>
  </div>
</template>

<script>
export default {
  props: {
    currentPage: {
      type: Number,
      required: true,
    },
    totalPages: {
      type: Number,
      required: true,
    },
  },
  methods: {
    goToPage(page) {
      if (page >= 1 && page <= this.totalPages) {
        this.$emit('page-change', page);
      }
    },
  },
};
</script>

<style>
.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 10px;
}
</style>

结合 API 分页请求

在实际项目中,翻页通常需要与后端 API 交互。以下是一个结合 API 请求的示例。

<template>
  <div>
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.name }}</li>
    </ul>
    <v-pagination
      v-model="currentPage"
      :length="totalPages"
      @input="fetchData"
    ></v-pagination>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentPage: 1,
      totalPages: 0,
      items: [],
    };
  },
  created() {
    this.fetchData();
  },
  methods: {
    async fetchData() {
      const response = await axios.get('/api/items', {
        params: {
          page: this.currentPage,
        },
      });
      this.items = response.data.items;
      this.totalPages = response.data.totalPages;
    },
  },
};
</script>

使用 Element UIel-pagination

如果项目使用的是 Element UI,可以使用其内置的 el-pagination 组件。

vue中实现翻页功能

<template>
  <el-pagination
    @current-change="handleCurrentChange"
    :current-page="currentPage"
    :page-size="pageSize"
    :total="totalItems"
    layout="prev, pager, next"
  ></el-pagination>
</template>

<script>
export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 10,
      totalItems: 100,
    };
  },
  methods: {
    handleCurrentChange(page) {
      this.currentPage = page;
      this.loadData();
    },
    loadData() {
      // 加载数据逻辑
    },
  },
};
</script>

分页逻辑封装

可以将分页逻辑封装成一个可复用的 mixin。

// paginationMixin.js
export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 10,
      totalItems: 0,
    };
  },
  methods: {
    handlePageChange(page) {
      this.currentPage = page;
      this.loadData();
    },
    loadData() {
      // 需要组件自行实现
    },
  },
};

在组件中使用:

<template>
  <div>
    <!-- 数据展示 -->
    <v-pagination
      v-model="currentPage"
      :length="Math.ceil(totalItems / pageSize)"
      @input="handlePageChange"
    ></v-pagination>
  </div>
</template>

<script>
import paginationMixin from './paginationMixin';

export default {
  mixins: [paginationMixin],
  methods: {
    loadData() {
      // 实现具体的数据加载逻辑
    },
  },
};
</script>

标签: 翻页功能
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP实现打印功能的方法 在PHP中实现打印功能可以通过多种方式完成,包括直接输出到浏览器、生成PDF文件、调用打印机接口等。以下是几种常见的方法: 直接输出HTML内容 PHP可以通过echo或p…

vue实现滑动翻页

vue实现滑动翻页

Vue 实现滑动翻页的方法 使用 touch 事件监听 在 Vue 组件中监听 touchstart、touchmove 和 touchend 事件,通过计算滑动距离判断翻页方向。 <…

php 实现聊天功能

php 实现聊天功能

PHP 实现聊天功能的方法 使用 WebSocket 和 Ratchet 库 WebSocket 是实现实时聊天的理想选择。Ratchet 是一个 PHP 库,用于处理 WebSocket 连接。…

vue实现网页功能

vue实现网页功能

Vue 实现网页功能的核心方法 创建 Vue 项目 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 适合现代轻量级应用。 npm init vue@lat…

vue模板功能实现

vue模板功能实现

Vue 模板功能实现 Vue 的模板功能是 Vue.js 的核心特性之一,允许开发者通过声明式的方式将数据绑定到 DOM。以下是 Vue 模板功能的主要实现方式和相关技术细节。 插值语法 Vue 使…

vue简单功能实现

vue简单功能实现

Vue 简单功能实现示例 以下是一个基于 Vue 3 的简单计数器功能实现,包含模板、脚本和样式部分: <template> <div class="counter">…