vue.js 表格分页ajax 异步加载数据


Posted in Javascript onOctober 18, 2016

Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API。

分页一般和表格一起用,分页链接作为表格的一部分,将分页链接封装成一个独立的组件,然后作为子组件嵌入到表格组件中,这样比较合理。

1.注册一个组件

js

Vue.component('pagination',{
template:'#paginationTpl',
replace:true,
props:['cur','all','pageNum'],
methods:{
//页码点击事件
btnClick: function(index){
if(index != this.cur){
this.cur = index
}
}
},
watch:{
"cur" : function(val,oldVal) {
this.$dispatch('page-to', val)
}
},
computed:{
indexes : function(){
var list = []
//计算左右页码
var mid = parseInt(this.pageNum / 2);//中间值
var left = this.cur - mid;
var right = Math.max(this.cur + this.pageNum - mid -1,this.pageNum);
if (left < 1) {left = 1}
if (right > this.all ) { right = this.all}
while (left <= right){
list.push(left)
left ++
}
return list;
},
showLast: function(){
if(this.cur == this.all){
return false
}
return true
},
showFirst: function(){
if(this.cur == 1){
return false
}
return true
}
}
});

模板:

<script type="text/template" id="paginationTpl">
<nav v-if="all > 1">
<ul class="pagination">
<li v-if="showFirst"><a href="javascript:" @click="cur--">«</a></li>
<li v-for="index in indexes" :class="{ 'active': cur == index}">
<a @click="btnClick(index)" href="javascript:">{{ index }}</a>
</li>
<li v-if="showLast"><a @click="cur++" href="javascript:">»</a></li>
<li><a>共<i>{{all}}</i>页</a></li>
</ul>
</nav>
</script>

HTML:

<div id='parentEle'>
...
<pagination :cur="1" :all="pageAll" :page-num="10" @page-to="loadList"></pagination>
</div>

当点击分页链接的时候,会触发

page-to

事件,而我们在html标签中指定了使用父组件

loadList

方法处理事件,我们只要在组件中把当前页码传给父组件即可,父组件负责ajax加载数据,并更新自身的 pageAll 值。

Javascript 相关文章推荐
初窥JQuery(二) 事件机制(1)
Nov 25 Javascript
基于jQuery.Validate验证库知识点的详解
Apr 26 Javascript
js查找节点的方法小结
Jan 13 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
Jul 18 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
Sep 26 Javascript
js实现的万能flv网页播放器代码
Apr 30 Javascript
jQuery事件详解
Feb 23 Javascript
JS异步文件上传(兼容IE8+)
Apr 02 Javascript
详解自定义ajax支持跨域组件封装
Feb 08 Javascript
在vue+element ui框架里实现lodash的debounce防抖
Nov 13 Javascript
Vue如何实现验证码输入交互
Dec 07 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
vue.js表格分页示例
Oct 18 #Javascript
Angular.js中用ng-repeat-start实现自定义显示
Oct 18 #Javascript
Bootstrap框架的学习教程详解(二)
Oct 18 #Javascript
微信小程序 教程之WXSS
Oct 18 #Javascript
微信小程序 教程之引用
Oct 18 #Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
Oct 18 #Javascript
微信小程序 教程之事件
Oct 18 #Javascript
You might like
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
yii分页组件用法实例分析
2015/12/28 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
js 获取服务器控件值的代码
2010/03/05 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
优秀志愿者事迹材料
2014/02/03 职场文书
小学语文国培感言
2014/03/04 职场文书
物资采购方案
2014/06/12 职场文书
春季运动会开幕词
2015/01/28 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技