Vue.js实现一个自定义分页组件vue-paginaiton


Posted in Javascript onSeptember 05, 2016

vue实现一个分页组件vue-paginaiton

vue使用了一段时间的感触就是,我再也不想直接操作DOM了。数据绑定式的编程体验真是好。实现的一个分页组件。

这里的css就不放出来了,可以看直接去github上下载:vue-pagination

先上一张实例图吧

Vue.js实现一个自定义分页组件vue-paginaiton

模版

<div class="page-bar">
 <ul>
 <li v-if="showFirstText"><a v-on:click="cur--">上一页</a></li>

 <li v-for = "index in pagenums">
 <a v-on:click="pageChange(index)">{{index}}</a>

 </li>

 <li v-if="showNextText"><a v-on:click="cur++">下一页</a></li>
 <li><a>共<i>{{all}}</i>页</a></li>
 </ul>

</div>

Vue.js实现一个自定义分页组件vue-paginaiton

在未引入js前,页面的显示,分析下,all字段简单直接输出即可,{{index}}是分页码这个需要一些动态的渲染。

var app = new Vue({
 el: '#app',
 data:{
 currentpage: 1,
 totlepage: 28,
 visiblepage:10,
 msg: ''
 },
})

调用 new Vue({参数}) 就是创建了一个基本的组件,赋值给变量 app.el就是element的缩写,定位模版的位置.data就是数据了.知道了总页数但是要显示页码还是要一番计算,所以显示页码就是计算属性了.所以我们要用computed

computed: {
 //计算属性:返回页码数组,这里会自动进行脏检查,不用$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数据当它改变的时候,可以获取前后值。然后通知其他组件。

完整的代码可以看 github:vue-pagination

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

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

Javascript 相关文章推荐
javascript js cookie的存储,获取和删除
Dec 29 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
Dec 29 Javascript
javascript复制对象使用说明
Jun 28 Javascript
js获取通过ajax返回的map型的JSONArray的方法
Jan 09 Javascript
javascript操作referer详细解析
Mar 10 Javascript
Javascript中判断一个值是否为undefined的方法详解
Sep 28 Javascript
vue制作加载更多功能的正确打开方式
Oct 12 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
Jan 14 Javascript
js学习总结_选项卡封装(实例讲解)
Jul 13 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
May 27 jQuery
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
Sep 05 #Javascript
Vue.js每天必学之计算属性computed与$watch
Sep 05 #Javascript
jQuery实现的导航下拉菜单效果示例
Sep 05 #Javascript
jquery层级选择器的实现(匹配后代元素div)
Sep 05 #Javascript
Vue.js每天必学之数据双向绑定
Sep 05 #Javascript
JS快速实现移动端拼图游戏
Sep 05 #Javascript
jQuery实现的tab标签切换效果示例
Sep 05 #Javascript
You might like
php 魔术方法使用说明
2009/10/20 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
php获取淘宝分类id示例
2014/01/16 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
js里面的变量范围分享
2020/07/18 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
Django REST framework内置路由用法
2019/07/26 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
python如何调用php文件中的函数详解
2020/12/29 Python
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
咖啡蛋糕店创业计划书
2014/01/28 职场文书
学生会主席演讲稿
2014/04/25 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
公司门卫岗位职责
2015/04/13 职场文书
早会开场白台词大全
2015/06/01 职场文书
中学教师读书笔记
2015/07/01 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
TS 类型兼容教程示例详解
2022/09/23 Javascript