当前位置:首页 > 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() {
      // 需要组件自行实现
    },
  },
};

在组件中使用:

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

vue中实现翻页功能

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

相关文章

php实现linux关机重启功能

php实现linux关机重启功能

通过PHP执行Linux关机或重启命令 PHP可以通过exec()、shell_exec()或system()等函数调用系统命令实现关机或重启功能,但需注意权限问题。 使用exec函数执行命令 //…

php实现留言板功能

php实现留言板功能

PHP 留言板功能实现 数据库设计 创建数据库表 messages,包含以下字段: id:自增主键 name:留言者姓名(VARCHAR) email:留言者邮箱(VARCHAR) content…

vue电影功能实现

vue电影功能实现

Vue 电影功能实现 数据获取与展示 使用 Axios 或 Fetch API 从电影 API(如 TMDb、豆瓣 API)获取数据。在 Vue 的 created 或 mounted 生命周期钩子中…

vue实现拨号功能

vue实现拨号功能

Vue 实现拨号功能 使用 tel: 协议实现基础拨号 在 Vue 中可以通过 HTML 的 <a> 标签结合 tel: 协议实现拨号功能。这种方式适用于移动端浏览器,点击后会直接调用系统…

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备与绑定 准备一个包含所有数据的数组,并使用v-model或v-…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT P…