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 相关文章推荐
非常好的js代码
Jun 27 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
Aug 19 Javascript
JavaScript实现网站访问次数统计代码
Aug 12 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
Mar 13 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
JavaScript每天必学之数组和对象部分
Sep 17 Javascript
如何在Angular2中使用jQuery及其插件的方法
Feb 09 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
JavaScript运动框架 链式运动到完美运动(五)
May 18 Javascript
获取当前按钮或者html的ID名称实例(推荐)
Jun 23 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
Jul 08 jQuery
Echarts如何重新渲染实例详解
May 30 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
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
PHP 多进程 解决难题
2009/06/22 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
2019/02/20 PHP
div层的移动及性能优化
2010/11/16 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
js实现兼容IE和FF的上下层的移动
2015/05/04 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
Django中处理出错页面的方法
2015/07/15 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
python ---lambda匿名函数介绍
2019/03/13 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
党员自我剖析材料
2014/08/31 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python