利用VUE框架,实现列表分页功能示例代码

发布时间 - 2026-01-10 22:29:13    点击率:

先来看一下效果图:

 

 

功能描述:

1. 点击页面序号跳转到相应页面;

2. 点击单左/单右,向后/向前跳转一个页面;

3. 点击双左/双右,直接跳转到最后一页/第一页;

4. 一次显示当前页面的前三个与后三个页面;

5. 始终显示最后一个页面;

HTML:

 <!-- 分页开始 -->
<div class="u-pages" style="margin-bottom:20px; margin-top:10px;">
 <ul>
   <li v-if="showPre" class="crt"><a v-on:click="jumpFirst(cur)"> &lt;&lt; </a></li>
   <li v-if="showPre" class="crt"><a v-on:click="minus(cur)"> &lt; </a></li>

   <template v-for="index in indexs" >
     <li class="{{classRenderer(index)}}">
       <a v-on:click="btnClick(index)" >{{index}}</a>
     </li>
   </template>

   <li v-if="showMoreTail" class="crt">..</li>
   <li class="{{classRenderer(pageNo)}}"><a @click="btnClick(pageNo)">{{pageNo}}</a></li>
   <li v-if="showTail" class="crt"><a v-on:click="plus(cur)">&gt;</a></li>
   <li v-if="showTail" class="crt"><a v-on:click="jumpTail(cur)">&gt;&gt;</a></li>

 </ul>
</div>
<!-- 分页结束 -->

HTML方法分析: 

1、

<li class="{{classRenderer(index)}}">

classRenderer()方法实现了当点击页面索引是,点击页面获得选中效果

2、

<a v-on:click="btnClick(index)" >{{index}}</a> 

btnClick()方法,实现了点击页面索引,跳转到相应页面

showPre showTail

showPre控制跳转到第一页与跳转到前一页的按钮的显示与消除

showTail控制跳转到最后一页与跳转到后一页的按钮的显示与消除

cur

记录当前页序号

jumpFirst(cur) minus(cur) plus(cur) jumpTail(cur)

实现按钮跳转功能

JS:

 module.exports = {
    data: function () {
      return {
        cur:1,
        showTail:true,
        showMorePre: false,
        showMoreTail: false,       

      }
    },
    methods:{
    jumpFirst:function(data){
        var $this = this;
        data = 1;
        $this.cur = data;
        if (data == 1 )
        {
          $this.$set("showPre", false);
        }else
        {
          $this.$set("showPre", true);
        }
        $this.$am.ajax({
          url:window.$ApiConf.api_order_detail_list,
          type:'GET',
          data:{start: 1},
          success: function(data){
            console.log(data);
            $this.$set("records", data.record.records);
            $this.$set("start", data.record.query.start);
            $this.$set("total", data.record.query.total);
            $this.$set("limit", data.record.query.limit);
          }
        })
        $this.$set("showTail", true);
        return data;
      },
      minus:function(data){
        var $this = this;
        data--;
        $this.cur = data;
        $this.$set("showTail", true);
        if(data == 1){
          $this.$set("showPre", false);

        }else{
          $this.$set("showPre", true);
        }

        $this.$am.ajax({
          url:window.$ApiConf.api_order_detail_list,
          type:'GET',
          data:{start: 1 + $this.limit * (data-1) },
          success:function(data){
            console.log(data);
            $this.$set("records", data.record.records);
            $this.$set("start", data.record.query.start);
            $this.$set("total", data.record.query.total);
            $this.$set("limit", data.record.query.limit);
          }
        })
        return data;
      },
      plus: function(data){
        var $this = this;
        data++;
        $this.cur = data;
        $this.$set("showPre", true);
        if (data == $this.pageNo)
        {
          $this.$set("showTail", false);
        }else
        {
          $this.$set("showTail", true);
        }
        $this.$am.ajax({
          url:/* 这里写上你自己请求数据的路径 */,
          type:'GET',
          data:{start: 1 + $this.limit * (data-1) },
          success:function(data){
            console.log(data);
            $this.$set("records", data.record.records);
            $this.$set("start", data.record.query.start);
            $this.$set("total", data.record.query.total);
            $this.$set("limit", data.record.query.limit);
          }
        })
        return data;
      },
      classRenderer:function(index){
        var $this = this;
        var cur = $this.cur;
        if(index != cur){
          return 'crt';
        }
        return '';
      },
      btnClick:function(data){
        var $this = this;
        if(data == 1){
          $this.$set("showPre", false);

        }else{
          $this.$set("showPre", true);
        }
        if (data == $this.pageNo)
        {
          $this.$set("showTail", false);
        }else
        {
          $this.$set("showTail", true);
        }
        if (data != $this.cur)
        {
          $this.cur = data;
          $this.$am.ajax({
            url:window.$ApiConf.api_order_detail_list,
            type:'GET',
            data:{start: 1 + $this.limit * (data-1) },
            success:function(data){
              console.log(data);
              $this.$set("records", data.record.records);
              $this.$set("start", data.record.query.start);
              $this.$set("total", data.record.query.total);
              $this.$set("limit", data.record.query.limit);
            }
          })
        }
      },
      jumpTail:function(data){
        var $this = this;
        data = $this.pageNo;
        $this.cur = data;
        if (data == $this.pageNo)
        {
          $this.$set("showTail", false);
        }else
        {
          $this.$set("showTail", true);
        }
        $this.$am.ajax({
          url:window.$ApiConf.api_order_detail_list,
          type:'GET',
          data:{start: 1 + $this.limit * (data-1) },
          success:function(data){
            console.log(data);
            $this.$set("records", data.record.records);
            $this.$set("start", data.record.query.start);
            $this.$set("total", data.record.query.total);
            $this.$set("limit", data.record.query.limit);
          }
        })
        $this.$set("showPre", true);
        return data;
      },
     computed: {
      //*********************分页开始******************************//
      indexs: function(){
        var $this = this;
        var ar = [];

        if ($this.cur > 3)
        {
          ar.push($this.cur - 3);
          ar.push($this.cur - 2);
          ar.push($this.cur - 1);

        }else
        {
          for (var i = 1; i < $this.cur; i++)
          {
            ar.push(i);
          }
        }
        if ($this.cur != $this.pageNo)
        {
          ar.push($this.cur);
        }

        if ( $this.cur < ( $this.pageNo - 3 ) )
        {
          ar.push($this.cur + 1);
          ar.push($this.cur + 2);
          ar.push($this.cur + 3);
          if ( $this.cur < ( $this.pageNo - 4 ) )
          {
            $this.$set("showMoreTail", true);
          }
        }else
        {
          $this.$set("showMoreTail", false);
          for (var i = ($this.cur + 1); i < $this.pageNo; i++)
          {
            ar.push(i);
          }
        }
        return ar;
      }
      //*********************分页结束******************************//
    }
}   

JS功能分析:indexs用于记录一共有多少页面

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue.js实现分页  # vue  # 列表分页  # vue实现列表分页代码  # 前端框架Vue.js中Directive知识详解  # 前端框架Vue.js构建大型应用浅析  # angular  # avalon这三种MVVM框架优缺点  # Vue框架中正确引入JS库的方法介绍  # vue.js中mint-ui框架的使用方法  # 使用vue框架 Ajax获取数据列表并用BootStrap显示出来  # Vue2.0 UI框架ElementUI使用方法详解  # 前端框架学习总结之Angular、React与Vue的比较详解  # 基于Vuejs框架实现翻页组件  # 小白教程|一小时上手最流行的前端框架vue(推荐)  # 跳转到  # 分页  # 跳转  # 第一页  # 实现了  # 你自己  # 看一下  # 写上  # 先来  # 大家多多  # 当前页  # bottom  # margin  # px  # pages  # div  # gt  # style  # click  # crt 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: php结合redis实现高并发下的抢购、秒杀功能的实例  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何快速启动建站代理加盟业务?  微信小程序 canvas开发实例及注意事项  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  如何用搬瓦工VPS快速搭建个人网站?  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  javascript读取文本节点方法小结  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  nginx修改上传文件大小限制的方法  高端建站如何打造兼具美学与转化的品牌官网?  如何在Windows服务器上快速搭建网站?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  个人网站制作流程图片大全,个人网站如何注销?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  如何在Tomcat中配置并部署网站项目?  Android中AutoCompleteTextView自动提示  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  BootStrap整体框架之基础布局组件  Python图片处理进阶教程_Pillow滤镜与图像增强  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  如何在Ubuntu系统下快速搭建WordPress个人网站?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  javascript中对象的定义、使用以及对象和原型链操作小结  如何在建站之星网店版论坛获取技术支持?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Mybatis 中的insertOrUpdate操作  如何快速生成橙子建站落地页链接?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  如何选择PHP开源工具快速搭建网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  *服务器网站为何频现安全漏洞?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  IOS倒计时设置UIButton标题title的抖动问题  如何在IIS服务器上快速部署高效网站?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  Swift中swift中的switch 语句  如何获取PHP WAP自助建站系统源码?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?