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 相关文章推荐
鼠标经过tr时,改变tr当前背景颜色
Jan 13 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
Mar 03 Javascript
javascript如何判断输入的url是否正确
Apr 11 Javascript
JavaScript利用闭包实现模块化
Jan 13 Javascript
原生JS改变透明度实现轮播效果
Mar 24 Javascript
微信小程序仿朋友圈发布动态功能
Jul 15 Javascript
vue使用ajax获取后台数据进行显示的示例
Aug 09 Javascript
vue2中引用及使用 better-scroll的方法详解
Nov 15 Javascript
Vuex新手的理解与使用详解
May 31 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
Jun 24 Javascript
JS实现图片幻灯片效果代码实例
May 21 Javascript
jQuery实时统计输入框字数及限制
Jun 24 jQuery
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中3种方法删除字符串中间的空格
2014/03/10 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
javascript 写类方式之二
2009/07/05 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
Python实现全角半角转换的方法
2014/08/18 Python
Python用GET方法上传文件
2015/03/10 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
python 项目目录结构设置
2020/02/14 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
美化环境标语
2014/06/20 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
表扬稿范文
2015/01/17 职场文书
倡议书作文
2015/01/19 职场文书
运动员加油词
2015/07/18 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
Promise面试题详解之控制并发
2021/05/14 面试题