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 相关文章推荐
网上抓的一个特效
May 11 Javascript
javascript 用记忆函数快速计算递归函数
Mar 15 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
Apr 19 Javascript
jquery实现的导航固定效果
Apr 28 Javascript
jQuery使用$.each遍历json数组的简单实现方法
Apr 18 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
Jun 15 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
Node.JS文件系统解析实例详解
May 15 Javascript
Vue 动态组件components和v-once指令的实现
Aug 30 Javascript
uni-app如何实现增量更新功能
Jan 03 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
Jul 15 Javascript
Vue提供的三种调试方式你知道吗
Jan 18 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 如何向 MySQL 发送数据
2006/10/09 PHP
mysql+php分页类(已测)
2008/03/31 PHP
PHP实现的迷你漂流瓶
2015/07/29 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
载入进度条 效果
2006/07/08 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
js模拟微博发布消息
2017/02/23 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python实现聊天小程序
2018/03/13 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
python中wx模块的具体使用方法
2020/05/15 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
Linux文件系统类型
2012/09/16 面试题
个人务虚会发言材料
2014/10/20 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
大学生就业意向书
2015/05/11 职场文书
撤诉状格式范本
2015/05/19 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL