Vue.js实现一个自定义分页组件vue-paginaiton
vue实现一个分页组件vue-paginaiton
vue使用了一段时间的感触就是,我再也不想直接操作DOM了。数据绑定式的编程体验真是好。实现的一个分页组件。
这里的css就不放出来了,可以看直接去github上下载
先上一张实例图吧
模版
<div class="page-bar"> <ul> <li v-if="showFirstText"><a v-onclick="cur--">上一页</a></li> <li v-for = "index in pagenums"> <a v-on:click="pageChange(index)">{{index}}</a> </li> <li v-if="showNextText"><a v-onclick="cur++">下一页</a></li> <li><a>共<i>{{all}}</i>页</a></li> </ul> </div>
在未引入js前,页面的显示,分析下,all字段简单直接输出即可,{{index}}是分页码这个需要一些动态的渲染。
var app = new Vue({ el: '#app', data:{ currentpage: 1, totlepage: 28, visiblepage:10, msg: '' }, })
调用 new Vue({参数}) 就是创建了一个基本的组件,赋值给变量 app.el就是element的缩写,定位模版的位置.data就是数据了.知道了总页数要显示页码还是要一番计算,所以显示页码就是计算属性了.所以我们要用puted
puted: { //计算属性返回页码数组,这里会自动进行脏检查,不用$watch(); pagenums: function(){ //初始化前后页边界 var lowPage = 1; var highPage = this.totlepage; var pageArr = []; if(this.totlepage > this.visiblepage){//总页数超过可见页数时,进一步处理; var subVisiblePage = Math.ceil(this.visiblepage/2); if(this.currentpage > subVisiblePage && this.currentpage < this.totlepage - subVisiblePage +1){//处理正常的分页 lowPage = this.currentpage - subVisiblePage; highPage = this.currentpage + subVisiblePage -1; }else if(this.currentpage <= subVisiblePage){//处理前几页的逻辑 lowPage = 1; highPage = this.visiblepage; }else{//处理后几页的逻辑 lowPage = this.totlepage - this.visiblepage + 1; highPage = this.totlepage; } } //确定了上下page边界后,要准备压入数组中了 while(lowPage <= highPage){ pageArr.push(lowPage); lowPage ++; } return pageArr; } },
观看html模版发现v-if指令.很明显当内容是true就输出,否就没。
重点看下
<li v-for="index in pagenums" v-bind:class="{ active: currentpage == index}"> <a v-on:click="pageChange(index)">{{ index }}</a> </li>
v-for是循环渲染输出计算属性pagenums.每一次循环的子元素赋值给index v-bind:class绑定class,当渲染到目前的角标的时候加个class v-on:click是绑定了事件,我把index当参数传进入了,后面做判断,默认传event事件.
然后我们Vue的选项里面再增加methods字段
methods:{ pageChange: function(page){ if (this.currentpage != page) { this.currentpage = page; this.$dispatch('page-change', page); //父子组件间的通信==>子组件通过$diapatch(),分发事件,父组件冒泡通过v-on:page-change监听到相应的事件; }; } }
组件交互
组件写完了,问题来了,用户点击发生页面改变,你怎么通知其他组件作出相应的变化. 可以在页角发生改变的函数下,插一条语句通知其他组件。不过这种方法是很差的做法。可以使用
watch: { currentpage: function(oldValue , newValue){ console.log(arguments) } }
观察了currentpage数据当它改变的时候,可以获取前后值。然后通知其他组件。
完整的代码可以看
本文已被整理到了《》,欢迎大家学习阅读。
关于vue.js组件的教程,请大家点击专题进行学习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程