当前位置:首页 > 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>

自定义翻页组件

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

<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 组件。

<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() {
      // 需要组件自行实现
    },
  },
};

在组件中使用:

vue中实现翻页功能

<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>

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

相关文章

h5实现书本翻页动画

h5实现书本翻页动画

实现书本翻页动画的H5技术方案 H5实现书本翻页动画可通过CSS 3D变换、JavaScript动画库或现成的插件完成。以下是三种主流实现方式: 使用CSS 3D变换 通过CSS的trans…

vue实现退出功能

vue实现退出功能

Vue 实现退出功能的方法 在 Vue 中实现退出功能通常涉及清除用户登录状态、跳转登录页等操作。以下是几种常见的实现方式: 清除登录状态并跳转 使用 Vue Router 进行页面跳转,同时清除本…

vue 实现单选功能

vue 实现单选功能

实现单选功能的方法 在Vue中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML单选按钮 通过v-model绑定数据,结合原生<input type="radio"&g…

vue留言功能实现

vue留言功能实现

Vue 留言功能实现 数据模型设计 留言功能通常需要以下数据结构: id: 唯一标识符 content: 留言内容 createdAt: 创建时间 author: 作者信息(可选) 示例数据结构:…

vue实现销假功能

vue实现销假功能

实现销假功能的Vue方案 在Vue中实现销假功能通常需要结合前端界面、状态管理和后端API交互。以下是完整的实现方案: 基础组件结构 创建请假表单组件LeaveForm.vue: <temp…

vue拖拽功能实现

vue拖拽功能实现

Vue 拖拽功能实现方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,通过 draggable 属性和相关事件实现基础拖拽功能。 <template>…