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

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

相关文章

vue实现轨道功能

vue实现轨道功能

实现轨道功能的基本思路 轨道功能通常指在界面中创建可滑动的轨道,用户可以通过拖动或点击轨道上的元素进行交互。Vue.js结合其响应式特性和组件化开发方式,可以高效实现这一功能。 核心实现步骤 创建轨…

vue实现用户添加功能

vue实现用户添加功能

实现用户添加功能的步骤 表单设计与数据绑定 在Vue组件中设计一个表单,包含用户名、邮箱、密码等字段。使用v-model指令实现双向数据绑定,将表单输入与组件的数据属性关联起来。 <t…

vue 实现 功能

vue 实现 功能

Vue.js 是一个流行的前端框架,用于构建用户界面和单页应用程序。以下是一些常见的 Vue 功能实现方法: 数据绑定 Vue 的核心特性之一是数据绑定,可以通过 v-model 指令实现双向数据…

php实现留言板功能

php实现留言板功能

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

vue实现按钮实现点击功能

vue实现按钮实现点击功能

实现按钮点击功能 在Vue中实现按钮点击功能可以通过v-on指令或@缩写来绑定事件。以下是几种常见的实现方式: 使用v-on指令 通过v-on:click绑定点击事件,触发定义在methods中的方…

vue实现翻页效果

vue实现翻页效果

使用Vue实现翻页效果 在Vue中实现翻页效果通常需要结合分页组件和数据处理逻辑。以下是几种常见方法: 基础分页组件实现 <template> <div>…