基于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 相关文章推荐
在Javascript中定义对象类别
Dec 22 Javascript
JS 仿腾讯发表微博的效果代码
Dec 25 Javascript
js验证输入是否为手机号码或电话号码示例
Dec 30 Javascript
jQuery检测某个元素是否存在代码分享
Jul 09 Javascript
jQuery获取DOM节点实例分析(2种方式)
Dec 15 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
Apr 07 Javascript
JavaScript中return用法示例
Nov 29 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
Mar 01 Javascript
Bootstrap 中data-[*] 属性的整理
Mar 13 Javascript
详解vue-cli中模拟数据的两种方法
Jul 03 Javascript
原生JS检测CSS3动画是否结束的方法详解
Jan 27 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
Jun 03 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
thinkPHP5.0框架简单配置作用域的方法
2017/03/17 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
Underscore源码分析
2015/12/30 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
详解vuex的简单使用
2018/03/12 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
Python交换变量
2008/09/06 Python
python处理cookie详解
2014/02/07 Python
Python实现拼接多张图片的方法
2014/12/01 Python
Python rstrip()方法实例详解
2018/11/11 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
创建文明城市标语
2014/06/16 职场文书
三年级学生期末评语
2014/12/26 职场文书
公司给客户的感谢信
2015/01/23 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
vue3不同环境下实现配置代理
2022/05/25 Vue.js