温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

vuejs2.0如何实现分页组件

发布时间:2021-07-06 12:30:17 来源:亿速云 阅读:194 作者:小新 栏目:web开发

这篇文章主要介绍vuejs2.0如何实现分页组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

首先使用基础 Vue 构造器,创建一个“子类”,Vue.extend( options )

var barHtml = '<div class="page-bar">'+    '<ul>'+    '<li v-if="cur>1"><a v-on:click="cur--,pageClick()">上一页</a></li>'+    '<li v-if="cur==1"><a class="banclick">上一页</a></li>'+    '<li v-for="index in indexs" v-bind:class="{ active: cur == index}">'+     '<a v-on:click="btnclick(index)">{{ index }}</a>'+    '</li>'+    '<li v-if="cur!=all"><a v-on:click="cur++,pageClick()">下一页</a></li>'+    '<li v-if="cur == all"><a class="banclick">下一页</a></li>'+    '<li><a>共<i>{{all}}</i>页</a></li>'+    '</ul>'+   '</div>';  var navBar = Vue.extend({  template:barHtml,  props:['all','cur'],  computed: {   indexs: function(){   var left = 1;   var right = this.all;   var ar = [];   if(this.all>= 5){   if(this.cur > 3 && this.cur < this.all-2){    left = this.cur - 2    right = this.cur + 2   }else{    if(this.cur<=3){    left = 1    right = 5    }else{    right = this.all    left = this.all -4    }   }   }   while (left <= right){   ar.push(left)   left ++   }   return ar   }   },  methods: {   btnclick: function(data){   if(data != this.cur){    this.cur = data;    this.$emit('btn-click',data);    }   },   pageClick: function(){   this.$emit('btn-click',this.cur);   }  },   });  window.pagenav = navBar;

这儿创建了一个全局的pagenav,可以在其它地方都可以调用。

html代码

<div id="page">  <vue-nav :cur.sync="cur" :all.sync="all" v-on:btn-click="listenDate"></vue-nav>  <p >{{msg}}</p> </div>

css代码

.page-bar{  margin:40px; } ul,li{  margin: 0px;  padding: 0px; } li{  list-style: none } .page-bar ul{  overflow: hidden; } .page-bar li{  float: left; } .page-bar li:first-child>a {  margin-left: 0px } .page-bar a{  display: block;  border: 1px solid #ddd;  text-decoration: none;  position: relative;  padding: 6px 12px;  margin-left: -1px;  line-height: 1.42857143;  color: #337ab7;  cursor: pointer } .page-bar a:hover{  background-color: #eee; } .page-bar a.banclick{  cursor:not-allowed; } .page-bar .active a{  color: #fff;  cursor: default;  background-color: #337ab7;  border-color: #337ab7; } .page-bar i{  font-style:normal;  color: #d44950;  margin: 0px 4px;  font-size: 12px; }

新建一个vue对象实例

var pageBar = new Vue({  el: '#page',  data: {   all: 8, //总页数   cur: 1,//当前页码   msg:''  },  components:{   'vue-nav':pagenav  },  watch: {   cur: function(oldValue , newValue){   console.log('监听cur前与后的值:');   console.log(arguments);   }  },   methods:{   listenDate:function(data){   this.cur = data;   this.msg = '你点击了'+data+ '页';   }  }  })

简单的用js封装了一下分页组件。

实现效果

vuejs2.0如何实现分页组件

<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <meta charset="utf-8"> <title></title> <meta name="keywords" content="" /> <meta name="description" content="" /> <script type="text/javascript" src="js/vue.min2.js"></script> <style> .page-bar{  margin:40px; } ul,li{  margin: 0px;  padding: 0px; } li{  list-style: none } .page-bar ul{  overflow: hidden; } .page-bar li{  float: left; } .page-bar li:first-child>a {  margin-left: 0px } .page-bar a{  display: block;  border: 1px solid #ddd;  text-decoration: none;  position: relative;  padding: 6px 12px;  margin-left: -1px;  line-height: 1.42857143;  color: #337ab7;  cursor: pointer } .page-bar a:hover{  background-color: #eee; } .page-bar a.banclick{  cursor:not-allowed; } .page-bar .active a{  color: #fff;  cursor: default;  background-color: #337ab7;  border-color: #337ab7; } .page-bar i{  font-style:normal;  color: #d44950;  margin: 0px 4px;  font-size: 12px; } </style> </head> <body> <div id="page">  <vue-nav :cur.sync="cur" :all.sync="all" v-on:btn-click="listenDate"></vue-nav>  <p >{{msg}}</p> </div> <script type="text/javascript">  var barHtml = '<div class="page-bar">'+    '<ul>'+    '<li v-if="cur>1"><a v-on:click="cur--,pageClick()">上一页</a></li>'+    '<li v-if="cur==1"><a class="banclick">上一页</a></li>'+    '<li v-for="index in indexs" v-bind:class="{ active: cur == index}">'+     '<a v-on:click="btnclick(index)">{{ index }}</a>'+    '</li>'+    '<li v-if="cur!=all"><a v-on:click="cur++,pageClick()">下一页</a></li>'+    '<li v-if="cur == all"><a class="banclick">下一页</a></li>'+    '<li><a>共<i>{{all}}</i>页</a></li>'+    '</ul>'+   '</div>';  var navBar = Vue.extend({  template:barHtml,  props:['all','cur'],  computed: {   indexs: function(){   var left = 1;   var right = this.all;   var ar = [];   if(this.all>= 5){   if(this.cur > 3 && this.cur < this.all-2){    left = this.cur - 2    right = this.cur + 2   }else{    if(this.cur<=3){    left = 1    right = 5    }else{    right = this.all    left = this.all -4    }   }   }   while (left <= right){   ar.push(left)   left ++   }   return ar   }   },  methods: {   btnclick: function(data){   if(data != this.cur){    this.cur = data;    this.$emit('btn-click',data);    }   },   pageClick: function(){   this.$emit('btn-click',this.cur);   }  },   });  window.pagenav = navBar;  var pageBar = new Vue({  el: '#page',  data: {   all: 8, //总页数   cur: 1,//当前页码   msg:''  },  components:{   'vue-nav':pagenav  },  watch: {   cur: function(oldValue , newValue){   console.log('监听cur前与后的值:');   console.log(arguments);   }  },   methods:{   listenDate:function(data){   this.cur = data;   this.msg = '你点击了'+data+ '页';   }  }  }) </script> </body> </html>

以上是“vuejs2.0如何实现分页组件”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI