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 相关文章推荐
分享一个我自己写的ToolTip提示插件(附源码)
Jan 20 Javascript
基于jQuery实现模拟页面加载进度条
Apr 01 Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 Javascript
jquery显示隐藏元素的实现代码
May 19 Javascript
JavaScript中的this引用(推荐)
Aug 05 Javascript
js 创建对象 经典模式全面了解
Aug 16 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
Mar 15 Javascript
bing Map 在vue项目中的使用详解
Apr 09 Javascript
微信小程序时间轴实现方法示例
Jan 14 Javascript
vue-cli3使用mock数据的方法分析
Mar 16 Javascript
javascript实现前端input密码输入强度验证
Jun 24 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
Aug 04 Javascript
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
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
jquery 3D球状导航的文章分类
2010/07/06 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
百度地图api如何使用
2015/08/03 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
Python netmiko模块的使用
2020/02/14 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
小学三八妇女节活动方案
2014/03/16 职场文书
社区护士演讲稿
2014/08/27 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
公司联欢会主持词
2015/07/04 职场文书
导游词之山西-五老峰
2019/10/07 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python