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 相关文章推荐
JavaScript 原型链学习总结
Oct 29 Javascript
jQuery Mobile 触摸事件实例
Jun 04 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
Oct 30 Javascript
Vue axios 中提交表单数据(含上传文件)
Jul 06 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
微信小程序实现验证码获取倒计时效果
Feb 08 Javascript
重新认识vue之事件阻止冒泡的实现
Aug 02 Javascript
JavaScript选择排序算法原理与实现方法示例
Aug 06 Javascript
vue给对象动态添加属性和值的实例
Sep 09 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 Javascript
浅谈React中组件逻辑复用的那些事儿
May 21 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
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
angular json对象push到数组中的方法
2018/02/27 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
python数据清洗系列之字符串处理详解
2017/02/12 Python
python实现简单井字棋小游戏
2020/03/05 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
TCP/IP模型的分界线
2012/12/01 面试题
三好学生自我鉴定
2013/12/17 职场文书
教育专业自荐书范文
2013/12/17 职场文书
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
白血病募捐倡议书
2014/05/14 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
教师节作文之小学四年级
2019/09/03 职场文书