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一组验证函数
Dec 20 Javascript
JQuery 学习笔记 选择器之四
Jul 23 Javascript
JavaScript前端图片加载管理器imagepool使用详解
Dec 29 Javascript
js通过iframe加载外部网页的实现代码
Apr 05 Javascript
javascript的变量、传值、传址、参数之间关系
Jul 26 Javascript
JavaScript深度复制(deep clone)的实现方法
Feb 19 Javascript
axios 封装上传文件的请求方法
Sep 26 Javascript
layui在form表单页面通过Validform加入简单验证的方法
Sep 06 Javascript
Vue中图片Src使用变量的方法
Oct 30 Javascript
vue 实现tab切换保持数据状态
Jul 21 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
Aug 08 Javascript
微信小程序选择图片控件
Jan 19 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
咖啡的植物学知识
2021/03/03 咖啡文化
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
初学Javascript的一些总结
2008/11/03 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
秘书英文求职信范文
2014/01/31 职场文书
作风建设整改方案
2014/10/27 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫
idea下配置tomcat避坑详解
2022/04/12 Servers
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL