zoukankan      html  css  js  c++  java
  • vue如何做分页?

    原创作品转载请注明出处

    先来看一下效果图: 
    这里写图片描述 
    这里写图片描述 
    这里写图片描述

    功能描述: 
    1. 点击页面序号跳转到相应页面; 
    2. 点击单左/单右,向后/向前跳转一个页面; 
    3. 点击双左/双右,直接跳转到最后一页/第一页; 
    3. 一次显示当前页面的前三个与后三个页面; 
    4. 始终显示最后一个页面;

    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>
    <!-- 分页结束 -->
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    HTML方法分析: 
    1、<li class="{{classRenderer(index)}}"> 
    classRenderer()方法实现了当点击页面索引是,点击页面获得选中效果 
    2、<a v-on:click="btnClick(index)" >{{index}}</a> 
    btnClick()方法,实现了点击页面索引,跳转到相应页面 
    3、showPre showTail 
    showPre控制跳转到第一页与跳转到前一页的按钮的显示与消除 
    showTail控制跳转到最后一页与跳转到后一页的按钮的显示与消除 
    4、cur 
    记录当前页序号 
    5、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;
                }
                //*********************分页结束******************************//
            }
    }      

    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); returndata; }, 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); } }) returndata; }, 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); } }) returndata; }, 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); returndata; }, 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中的函数节流
    JS继承类相关试题
    JS继承之寄生类继承
    JS继承之借用构造函数继承和组合继承
    JS继承之原型继承
    谈谈JS的观察者模式(自定义事件)
    JS图片上传预览插件制作(兼容到IE6)
    前端HTML5几种存储方式的总结
    angularJS实用的开发技巧
  • 原文地址:https://www.cnblogs.com/frx666/p/6709793.html
Copyright © 2011-2022 走看看