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 相关文章推荐
用js统计用户下载网页所需时间的脚本
Oct 15 Javascript
通过JS来判断页面控件是否获取焦点
Jan 03 Javascript
js取得html iframe中的元素和变量值
Jun 30 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
Aug 03 Javascript
深入浅出 jQuery中的事件机制
Aug 23 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
Jan 12 Javascript
微信小程序保存多张图片的实现方法
Mar 05 Javascript
js实现无缝滚动双图切换效果
Jul 09 Javascript
原生js实现二级联动菜单
Nov 27 Javascript
详解vue修改elementUI的分页组件视图没更新问题
Nov 13 Javascript
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
JavaScript实现两个数组的交集
Mar 25 Javascript
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
PHP如何透过ODBC来存取数据库
2006/10/09 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Python 文件操作实现代码
2009/10/07 Python
Python常用模块用法分析
2014/09/08 Python
python中__slots__用法实例
2015/06/04 Python
Python实现的计数排序算法示例
2017/11/29 Python
python 对象和json互相转换方法
2018/03/22 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
python中while和for的区别总结
2019/06/28 Python
如何基于python操作excel并获取内容
2019/12/24 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
护理职业应聘自荐书
2013/09/29 职场文书
韩语专业本科生求职信
2013/10/01 职场文书
党校培训学习心得体会
2016/01/06 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
创业计划书之闲置物品置换中心
2019/12/25 职场文书