基于vue.js的分页插件详解


Posted in Javascript onNovember 27, 2017

Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。想了解更多,请戳http://cn.vuejs.org/

html代码:

<div class="page-bar" v-else> 
 <ul> 
  <li style="width: 11%" v-if="showFirst"> 
  <a v-on:click="cur--"> 
   <<</a> 
  </li> 
  <li v-for="index in indexs" v-bind:class="{ 'active': cur == index}"> 
  <a v-on:click="btnClick(index)">{{index}}</a> 
  </li> 
  <li style="width: 11%" v-if="showLast"><a v-on:click="cur++"> >></a></li> 
  <li style="width: 22%;margin-left: 7%"><a>共<i>{{all}}</i>页</a></li> 
 </ul> 
 </div>

css部分,可根据自己的实际需要进行调整:

.page-bar { 
 margin-top: 21px; 
 margin-left: 11%; 
 } 
 
 .page-bar ul, 
 .page-bar li { 
 margin: 0px; 
 padding: 0px; 
 } 
 
 .page-bar ul li { 
 list-style: none; 
 border: 1px solid #ddd; 
 text-decoration: none; 
 position: relative; 
 float: left; 
 text-align: center; 
 padding: 1px 0; 
 margin-left: -1px; 
 line-height: 1.42857143; 
 color: #337ab7; 
 cursor: pointer; 
 width: 8%; 
 } 
 
 .page-bar li:first-child>a { 
 margin-left: 0px 
 } 
 
 .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; 
 }

js部分:

首先要创建一个基本组件

var vm = new Vue({ 
 el: 'body', 
 data: { 
 list: null, 
 all: 1, //总页数 
 cur: 1, //当前页码 
 },

继而要利用computed计算页码,

computed: { 
 indexs: function(index) { 
 var left = 1; 
 var right = this.all; 
 var ar = []; 
 if (this.all >= 11) { 
  if (this.cur > 5 && this.cur < this.all - 4) { 
  left = this.cur - 5; 
  right = this.cur + 4; 
  } else { 
  if (this.cur <= 5) { 
  left = 1; 
  right = 10; 
  } else { 
  right = this.all; 
  left = this.all - 9; 
  } 
  } 
 } 
 while (left <= right) { 
  ar.push(left); 
  left++; 
 } 
 return ar; 
 }, 
 showLast: function() { 
 if (this.cur == this.all) { 
  return false 
 } 
 return true 
 }, 
 showFirst: function() { 
 if (this.cur == 1) { 
  return false 
 } 
 return true 
 } 
 }

要给 元素加v-on:click="cur++"事件,所以要在vue里加method方法:

methods: { 
 btnClick: function(items) { //页码点击事件 
 if (items != this.cur) { 
  this.cur = items 
 } 
 } 
},

其实到这里基本上就差不多了,但是可以优化一下,当用户触发点击事件时,页面发生改变,这时要通知其他组件做出改变。

watch: { 
 cur: function(oldValue, newValue) { 
 console.log(arguments) 
 
 } 
 }

观察了cur数据当它改变的时候,可以获取前后值。然后通知其他组件。

后期会在个人GitHub上提交完整版代码

补充效果图展示

基于vue.js的分页插件详解

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

Javascript 相关文章推荐
jQuery 浮动广告实现代码
Dec 25 Javascript
onsubmit阻止form表单提交与onclick的相关操作
Sep 03 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
Aug 28 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
May 03 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
Sep 12 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
Apr 29 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
Dec 13 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
微信小程序使用form表单获取输入框数据的实例代码
May 17 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
Apr 14 Javascript
关于antd tree 和父子组件之间的传值问题(react 总结)
Jun 02 Javascript
webpack构建换肤功能的思路详解
Nov 27 #Javascript
vue实现商城上货组件简易版
Nov 27 #Javascript
修改UA在PC中访问只能在微信中打开的链接方法
Nov 27 #Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
Nov 27 #Javascript
vue实现商城购物车功能
Nov 27 #Javascript
Vim快速合并行及vim 将文件所有行合并到一行
Nov 27 #Javascript
详解利用Angular实现多团队模块化SPA开发框架
Nov 27 #Javascript
You might like
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
全面解析Python的While循环语句的使用方法
2015/10/13 Python
pyqt5实现登录界面的模板
2020/05/30 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
名词解释型面试题(主要是网络)
2013/12/27 面试题
《日月潭》教学反思
2014/02/28 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
逃课检讨书范文
2015/05/06 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
2015年防汛工作总结
2015/05/15 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
寒假致家长的一封信
2015/10/10 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python