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 相关文章推荐
javascript add event remove event
Apr 07 Javascript
锋利的jQuery jQuery中的DOM操作
Mar 21 Javascript
jQuery EasyUI 中文API Button使用实例
Apr 14 Javascript
javascript中的括号()用法小结
Apr 14 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
Dec 08 Javascript
DOM基础教程之事件对象
Jan 20 Javascript
举例说明如何为JavaScript的方法参数设置默认值
Nov 17 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
Apr 07 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
Jul 01 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
Feb 13 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
JavaScript实现捕获鼠标坐标
Apr 12 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
详解YII关联查询
2016/01/10 PHP
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
前端性能优化建议
2020/09/17 Javascript
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python基础练习之几个简单的游戏
2017/11/10 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
什么是python的必选参数
2020/06/21 Python
CSS3控制HTML元素动画效果
2014/02/08 HTML / CSS
css3media响应式布局实例
2016/07/08 HTML / CSS
销售人员中英文自荐信
2013/09/22 职场文书
网络专业学生个人的自我评价
2013/12/16 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
委托书如何写
2014/08/30 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书