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 相关文章推荐
扩展easyui.datagrid,添加数据loading遮罩效果代码
Nov 02 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
Sep 29 Javascript
JavaScript中的setMilliseconds()方法使用详解
Jun 11 Javascript
javascript学习小结之prototype
Dec 03 Javascript
jQuery 实现评论等级好评差评特效
May 06 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
Apr 16 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
Oct 14 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
Apr 20 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
Nov 29 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 Javascript
Vue 实现html中根据类型显示内容
Oct 28 Javascript
通过实例解析js可枚举属性与不可枚举属性
Dec 02 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
apache+php+mysql安装配置方法小结
2010/08/01 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
自己的js工具_Form 封装
2009/08/21 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
vue中mint-ui的使用方法
2018/04/04 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
Python部署web开发程序的几种方法
2017/05/05 Python
详解python3中的真值测试
2018/08/13 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
python装饰器使用实例详解
2019/12/14 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
海外淘书首选:AbeBooks
2017/07/31 全球购物
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
母亲节演讲稿范文
2014/01/02 职场文书
家长对小学生的评语
2014/01/28 职场文书
揠苗助长教学反思
2014/02/04 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
李强优秀员工观后感
2015/06/16 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python