IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue2.0 实现一个分页器 类淘宝 -> 正文阅读

[JavaScript知识库]Vue2.0 实现一个分页器 类淘宝

?

?

<template>
  <div class="pagination">
    <button :disabled="pageNo == 1" @click="clickNum(pageNo - 1)">
      上一页
    </button>
    <button @click="clickNum(1)" v-if="StartNumAndEndNum.start > 1">1</button>
    <button v-if="StartNumAndEndNum.start > 2">···</button>
    <!-- 中间 -->
    <div
      class="inlineBlock"
      v-for="(item, index) of StartNumAndEndNum.end"
      :key="index"
    >
      <button
        @click="clickNum(item)"
        v-if="item >= StartNumAndEndNum.start"
        :style="{
          background: item == pageNo ? 'red' : '',
          color: item == pageNo ? '#fff' : '',
        }"
      >
        {{ item }}
      </button>
    </div>

    <button v-if="StartNumAndEndNum.end < totalPage - 1">···</button>
    <button
      @click="clickNum(totalPage)"
      v-if="StartNumAndEndNum.end < totalPage"
    >
      {{ totalPage }}
    </button>
    <button :disabled="pageNo == totalPage" @click="clickNum(pageNo + 1)">
      下一页
    </button>
    <button style="margin-left: 30px">共 {{ total }} 条</button>
  </div>
</template>

<script>
export default {
  name: "Pagination",
  data() {
    return {};
  },
  props: ["pageNo", "pageSize", "total", "continuse"],
  computed: {
    totalPage() {
      return Math.ceil(this.total / this.pageSize);
    },
    //计算出连续的页码的起始数字与结束数字
    StartNumAndEndNum() {
      //解构
      let { totalPage } = this;
      let { continuse, pageNo } = this;
      //定义起始位置和结束位置
      let start;
      let end = 0;
      //如果总页数小于连续页码数 则默认起始和结束位置
      if (totalPage < continuse) {
        start = 1;
        end = totalPage;
      } else {
        start = pageNo - parseInt(continuse / 2);
        end = pageNo + parseInt(continuse / 2);
      }
      //起始页如果小于1 则返回1
      if (start < 1) {
        start = 1;
        end = continuse;
      }
      //如果结束页 > 总页数 则 = 总页数
      if (end > totalPage) {
        end = totalPage;
        start = totalPage - continuse + 1;
      }
      return { start, end };
    },
  },
  methods: {
    clickNum(item) {
      //触发自定义事件传入点击的页码
      this.$emit("getPageNo", item);
    },
  },
};
</script>

<style lang="less" scoped>
.pagination {
  text-align: center;
  .inlineBlock {
    display: inline-block;
  }
  button {
    margin: 0 5px;
    background-color: #f4f4f5;
    color: #606266;
    outline: none;
    border-radius: 2px;
    padding: 0 4px;
    vertical-align: top;
    display: inline-block;
    font-size: 13px;
    min-width: 35.5px;
    height: 28px;
    line-height: 28px;
    cursor: pointer;
    box-sizing: border-box;
    text-align: center;
    border: 0;

    &[disabled] {
      color: #c0c4cc;
      cursor: not-allowed;
    }

    &.active {
      cursor: not-allowed;
      background-color: #409eff;
      color: #fff;
    }
  }
}
</style>
//父组件



//注册
 components: {
    SearchSelector,
  },
//html
  <Pagination
            @getPageNo="getPageNo"
            :pageNo="SearchParams.pageNo"
            :pageSize="SearchParams.pageSize"
            :total="total"
            :continuse="5"  //规定了连续页的大小 通常是奇数为了美观
          />
 
//通过子组件点击 获取到点击的页码,整理数据后重新调取接口。
 getPageNo(i) {
      console.log(i, "获取点击的pageNo");
      this.SearchParams.pageNo = i;
      this.getApiSearch();
    },


  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:20:07  更:2022-02-28 15:23:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:46:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码