分页组件封装

封装分页的组件。

template部分:

  <div class="divuepagination">

      <ul class="pagination">

        <li v-show="di_coping" v-bind:class="{disabled:di_current==1}">

          <a v-on:click="clickFirst">

            <span>第一页

        <li v-on:click="clickPrev" v-bind:class="{disabled:di_current==1}">

            <span>上一页

        <li v-for="(item,index) indi_pageNum" v-bind:class="{active:di_current==item}" v-on:click="clickCurrent(item)" v-show="di_showPageNum"><a>{{item}}

        <li v-on:click="clickNext" v-bind:class="{disabled:di_current==di_pageCount}">

            <span>下一页

        <li v-show="di_coping" v-bind:class="{disabled:di_current==di_pageCount}">

          <a v-on:click="clickLast">

            <span>最后一页

      <div class="divuepage">

        <div class="divuepage-text" v-show="di_showPageCount">共{{di_pageCount}}页

        <div class="divuepage-text" v-show="di_showTotalData">共{{di_totalData}}条记录

        <input class="divuepage-input" type="text" v-model="skipvalue" v-show="di_showSkipPage" />

        <button class="divuepage-btn" v-on:click="clickSkip" v-show="di_showSkipPage">跳转

javascript部分:

export default {

name:'divuePagination',

  computed:{

di_current:function(){

return this.current

},  //存放返回当前第几页

  di_count:function(){

if(this.count>=1){

return this.count

}else{

return this.options.count

      }

},  //当前页前后页数    (默认:2)

  di_pageCount:function(){

return this.pageCount?this.pageCount:this.options.pageCount

  },  //存放返回总页数

  di_showPageNum:function(){

return this.showPageNum==1?true:false

  },  //是否显示页码

  di_showPageCount:function(){

return this.showPageCount==1?true:false

  },  //是否显示总页数

  di_totalData:function(){

return this.totalData?this.totalData:this.options.totalData

  },  //存放返回数据总条数

  di_showTotalData:function(){

return this.showTotalData==1?true:false

  },  //是否显示数据总条数

  di_nextPage:function(){

return this.nextPage?this.nextPage:this.options.nextPage

  },  //是否有下一页

  di_coping:function(){

return this.coping==1?true:false

  },  //是否开启首页尾页

  di_showSkipPage:function(){

return this.showSkipPage==1?true:false

  },  //是否显示跳页功能

  di_pageNum:function(){//页码生成

      var arr=[];//页码数组

      var show_num_size=Number(this.di_count)*2+1;//依据当前页前后页数 计算总页码个数

      if(this.di_pageCount<=show_num_size){

for(var i=1;i<=this.di_pageCount;i++){

arr.push(i);

        }

}else{

if(this.di_current<=this.di_count){

for(var i=1;i<=show_num_size;i++){

arr.push(i);

            }

}else if(this.di_current>this.di_pageCount-this.di_count){

for(var i=this.di_pageCount-show_num_size+1;i<=this.di_pageCount;i++){

arr.push(i);

            }

}else{

for(var i=this.di_current-this.di_count;i<=Number(this.di_current)+Number(this.di_count);i++){

arr.push(i);

            }

}

}

return arr;

  }

},

  data:function(){

return {

skipvalue:"", //跳页功能:输入框值

      options:{//默认值配置

        count:2,                //当前页前后页数    (默认:2)

        pageCount:1,            //存放返回总页数

        totalData:1,            //存放返回数据总条数

        nextPage:false        //是否有下一页

      }

}

},

  props:["current","count","pageCount","showPageNum","showPageCount","totalData","showTotalData","nextPage","coping","showSkipPage"],

  methods:{

clickFirst:function(){//点击第一页

      if(this.di_current-1<1){

return false;

      }

this.$emit("runAjax",1);

  },

  clickCurrent:function(item){//点击某一页

      this.$emit("runAjax",item);

  },

  clickLast:function(){//点击最后一页

      if(Number(this.di_current)+1>this.di_pageCount){

return false;

      }

this.$emit("runAjax",this.di_pageCount);

  },

  clickPrev:function(){//点击上一页

      if(this.di_current-1<1){

return false;

      }

this.$emit("runAjax",this.di_current-1);

  },

  clickNext:function(){//点击下一页

      if(Number(this.di_current)+1>this.di_pageCount){

return false;

      }

this.$emit("runAjax",Number(this.di_current)+1);

  },

  clickSkip:function(){//点击下一页

      if(isNaN(this.skipvalue)){

console.log("必须是数字")

return false;

      }

if(this.skipvalue<1 ||this.skipvalue>this.di_pageCount){

console.log("超过范围")

return false;

      }

this.$emit("runAjax",this.skipvalue);

  }

},

  created:function(){

}

}

style样式

.divuepagination{

text-align:center;

  font-size:14px;

}

.divuepage{

display:inline-block;

    padding-left:0;

    margin:20px 0;

    border-radius:4px;

  vertical-align:top;

}

.divuepage .divuepage-text{

float:left;

  padding:6px 12px;

  line-height:1.42857143;

  color:#337ab7;

  margin:0 2px;

  border-radius:4px;

  border:none;

}

.divuepage .divuepage-btn{

float:left;

  padding:6px 12px;

  line-height:1.42857143;

  color:#337ab7;

  margin:0 2px;

  border-radius:4px;

  border:none;

  border:1px solid #dddddd;

  cursor:pointer;

}

.divuepage .divuepage-input{

width:40px;

  float:left;

  padding:6px 12px;

  line-height:1.42857143;

  color:#337ab7;

  margin:0 2px;

  border-radius:4px;

  border:none;

  border:1px solid #dddddd;

}

.pagination {

display:inline-block;

  padding-left:0;

  margin:20px 0;

  border-radius:4px;

}

.pagination >li {

display:inline;

}

.pagination >li >a,

.pagination >li >span {

position:relative;

  float:left;

  padding:6px 12px;

  line-height:1.42857143;

  text-decoration:none;

  color:#337ab7;

  background-color:#ffffff;

  border:1px solid #dddddd;

  margin-left: -1px;

  cursor:pointer;

}

.pagination >li:first-child >a,

.pagination >li:first-child >span {

margin-left:0;

  border-bottom-left-radius:4px;

  border-top-left-radius:4px;

}

.pagination >li:last-child >a,

.pagination >li:last-child >span {

border-bottom-right-radius:4px;

  border-top-right-radius:4px;

}

.pagination >li >a:hover,

.pagination >li >span:hover,

.pagination >li >a:focus,

.pagination >li >span:focus {

z-index:2;

  color:#23527c;

  background-color:#eeeeee;

  border-color:#dddddd;

}

.pagination > .active >a,

.pagination > .active >span,

.pagination > .active >a:hover,

.pagination > .active >span:hover,

.pagination > .active >a:focus,

.pagination > .active >span:focus {

z-index:3;

  color:#ffffff;

  background-color:#337ab7;

  border-color:#337ab7;

  cursor:default;

}

.pagination > .disabled >span,

.pagination > .disabled >span:hover,

.pagination > .disabled >span:focus,

.pagination > .disabled >a,

.pagination > .disabled >a:hover,

.pagination > .disabled >a:focus {

color:#777777;

  background-color:#ffffff;

  border-color:#dddddd;

  cursor:not-allowed;

}

在router.js中

import divuePaginationfrom '@/module/divuePagination'

Vue.component('divue-pagination', divuePagination)

使用例子

    <div class="page">

        <h3 class="abc">//模拟ajax数据 共7页 32条<br/>演示内容:页码数量设置显示5个

        <ul class="ull">

            <li v-for="(item,index) inlist"><span class="l">id:{{item.id}}</span> <span class="r">内容:{{item.text}}

<divue-pagination

                :current="current"

                :count="count"

                :pageCount="pageCount"

                :showPageNum="showPageNum"

                :showPageCount="showPageCount"

                :totalData="totalData"

                :showTotalData="showTotalData"

                :nextPage="nextPage"

                :coping="coping"

                :showSkipPage="showSkipPage"

                @runAjax="runAjax">

</divue-pagination>

    export default {

name:"homePage",

        data () {

return {

pagename:"首页",

                list: [],                //存放返回当前页的数据

                current:1,              //存放返回当前第几页

                count:2,                          //当前页前后页数    (默认:2)

                pageCount:"",            //存放返回总页数

                showPageNum:1,            //是否显示页码    (默认值:1-显示 其他-不显示)

                showPageCount:1,              //是否显示总页数 (默认值:1-显示 其他-不显示)

                totalData:"",            //存放返回数据总条数

                showTotalData:1,              //是否显示数据总条数(默认值:1-显示 其他-不显示)

                nextPage:false,                  //是否有下一页

                coping:1,                      //是否开启首页尾页(默认值:1-显示 其他-不显示)

                showSkipPage:1,              //是否显示跳页功能(默认值:1-显示 其他-不显示)

            }

},

        methods:{

runAjax:function(current){

var that=this;

                var list=[];

                var pageCount="";

                var nextPage="";

                var totalData="";

                //模拟ajax数据 1-7页

                setTimeout(function(){

if(current==1){

list=[

{id:1,text:"我是显示内容111111"},

                            {id:2,text:"我是显示内容222222"},

                            {id:3,text:"我是显示内容3333333333"},

                            {id:4,text:"我是显示内容44444444444"},

                            {id:5,text:"我是显示内容555555555"},

                        ]

pageCount=7;

                        nextPage=true;

                        totalData=32;

                    }else if(current==2){

list=[

{id:1,text:"我是显示内容66666666"},

                            {id:2,text:"我是显示内容7777777777"},

                            {id:3,text:"我是显示内容8888888888"},

                            {id:4,text:"我是显示内容99999999999"},

                            {id:5,text:"我是显示内容101010"},

                        ]

pageCount=7;

                        nextPage=true;

                        totalData=32;

                    }else if(current==3){

list=[

{id:1,text:"我是显示内容111111111111111"},

                            {id:2,text:"我是显示内容121212"},

                            {id:3,text:"我是显示内容131313"},

                            {id:4,text:"我是显示内容141414"},

                            {id:5,text:"我是显示内容15515"},

                        ]

pageCount=7;

                        nextPage=true;

                        totalData=32;

                    }else if(current==4){

list=[

{id:1,text:"我是显示内容161616"},

                            {id:2,text:"我是显示内容171717"},

                            {id:3,text:"我是显示内容181818"},

                            {id:4,text:"我是显示内容191919"},

                            {id:5,text:"我是显示内容202020"},

                        ]

pageCount=7;

                        nextPage=true;

                        totalData=32;

                    }else if(current==5){

list=[

{id:1,text:"我是显示内容2121"},

                            {id:2,text:"我是显示内容22222"},

                            {id:3,text:"我是显示内容232323"},

                            {id:4,text:"我是显示内容242424"},

                            {id:5,text:"我是显示内容252525"},

                        ]

pageCount=7;

                        nextPage=true;

                        totalData=32;

                    }else if(current==6){

list=[

{id:1,text:"我是显示内容2626"},

                            {id:2,text:"我是显示内容2727"},

                            {id:3,text:"我是显示内容2828"},

                            {id:4,text:"我是显示内容2929"},

                            {id:5,text:"我是显示内容3030"},

                        ]

pageCount=7;

                        nextPage=true;

                        totalData=32;

                    }else if(current==7){

list=[

{id:1,text:"我是显示内容3131"},

                            {id:2,text:"我是显示内容3232"}

]

pageCount=7;

                        nextPage=false;

                        totalData=32;

                    };

                    that.list=list;

                    that.current=current;

                    that.pageCount=pageCount;

                    that.nextPage=nextPage;

                    that.totalData=totalData;

                },200);

            },

        },

        created:function(){

//模拟返回第一页数据

            this.runAjax(1);

            // //模拟返回第一页数据

// this.runAjax2(1);

// //模拟返回第一页数据

// this.runAjax3(1);

// //模拟返回第一页数据

// this.runAjax4(1);

// //模拟返回第一页数据

// this.runAjax5(1);

        },

        mounted:function(){

}

}

<style scoped>

    .page{

margin-top:100px;

    }

h3{text-align:left;}

ul{list-style:none;}

ull{margin:100px auto; width:1000px;line-height:30px;}

li{height:30px;}

.l{float:left;width:300px;}

.r{float:left;width:600px;}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351