Javascript vue.js表格分页,ajax异步加载数据


Posted in Javascript onOctober 24, 2016

分页一般和表格一起用,分页链接作为表格的一部分,将分页链接封装成一个独立的组件,然后作为子组件嵌入到表格组件中,这样比较合理。

效果:

Javascript vue.js表格分页,ajax异步加载数据

代码:

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 = Math.max(this.cur - mid,1);
        var right = Math.max(this.cur + this.pageNum - mid -1,this.pageNum);
        if (right > this.all ) { right = this.all}
        while (left <= right){
          list.push(left);
          left ++;
        }
        return list;
      },
      showLast: function(){
        return this.cur != this.all;
      },
      showFirst: function(){
        return this.cur != 1;
      }
    }
  });

模板:

<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='item_list'>
  ...
  <pagination :cur="1" :all="pageAll" :page-num="10" @page-to="loadList"></pagination>
</div>

当点击分页链接的时候,通过watch cur,子组件分发 page-to 事件,通过 @page-to="loadList" 标签指定使用父组件 loadList 方法处理事件,父组件接收到page值然后ajax加载数据,根据服务端返回计算并更新自身的 pageAll 值,因为子组件prop通过 :all="pageAll" 动态绑定了父组件的pageAll对象,所以子组件会联动更新。

附上一个简单的表格组件例子:

var vm = new Vue({
    el: "#item_list",
    data: {
      items : [],
      //分页参数
      pageAll:0, //总页数,根据服务端返回total值计算
      perPage:10 //每页数量
    },
    methods: {
      loadList:function(page){
        var that = this;
        $.ajax({
          url : "/getList",
          type:"post",
          data:{"page":page,"perPage":this.perPage},
          dataType:"json",
          error:function(){alert('请求列表失败')},
          success:function(res){
            if (res.status == 1) {
              that.items = res.data.list;
              that.perPage = res.data.perPage;
              that.pageAll = Math.ceil(res.data.total / that.perPage);//计算总页数
            }
          }
        });
      },
      //初始化
      init:function(){
        this.loadList(1);
      }
    }
  });
  vm.init();

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
ExtJs grid行 右键菜单的两种方法
Jun 19 Javascript
返回页面顶部top按钮通过锚点实现(自写)
Aug 30 Javascript
js实现使用鼠标拖拽切换图片的方法
May 04 Javascript
javascript同步服务器时间和同步倒计时小技巧
Sep 24 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
Jan 08 Javascript
Javascript中apply、call、bind的巧妙使用
Aug 18 Javascript
JS获取填报扩展单元格控件的值的解决办法
Jul 14 Javascript
使用puppeteer破解极验的滑动验证码
Feb 24 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 Javascript
在微信小程序中使用mqtt服务的方法
Dec 13 Javascript
vue实现图书管理系统
Dec 29 Vue.js
H5移动端适配 Flexible方案
Oct 24 #Javascript
javascript的document中的动态添加标签实现方法
Oct 24 #Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 #Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 #Javascript
express文件上传中间件Multer详解
Oct 24 #Javascript
用js实现博客打赏功能
Oct 24 #Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
Oct 24 #Javascript
You might like
各种快递查询--Api接口
2016/04/26 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python实现的登录和操作开心网脚本分享
2014/07/09 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
django foreignkey(外键)的实现
2019/07/29 Python
Django之模板层的实现代码
2019/09/09 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
Django实现内容缓存实例方法
2020/06/30 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
数控技术专业毕业自荐书范文
2014/02/05 职场文书
法律进学校实施方案
2014/03/15 职场文书
公司合作意向书
2014/04/01 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
家庭聚会祝酒词
2015/08/11 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL