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 相关文章推荐
html+js实现动态显示本地时间
Sep 21 Javascript
javascript 中的事件委托详解
Oct 25 Javascript
Angularjs中的ui-bootstrap的使用教程
Feb 19 Javascript
Angularjs 实现移动端在线测评效果(推荐)
Apr 05 Javascript
Vue.js实现模拟微信朋友圈开发demo
Apr 20 Javascript
Angular网络请求的封装方法
May 22 Javascript
让Vue也可以使用Redux的方法
May 23 Javascript
BootStrap模态框闪退问题实例代码详解
Dec 10 Javascript
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
一个小时快速搭建微信小程序的方法步骤
Apr 15 Javascript
微信小程序全局变量的设置、使用、修改过程解析
Sep 24 Javascript
微信小程序实现简单文字跑马灯
May 26 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
eclipse php wamp配置教程
2016/06/30 PHP
php查询及多条件查询
2017/02/26 PHP
javascript 数组的方法集合
2008/06/05 Javascript
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
Python中的is和id用法分析
2015/01/26 Python
使用python编写监听端
2018/04/12 Python
python让列表倒序输出的实例
2018/06/25 Python
python求最大连续子数组的和
2018/07/07 Python
在python中实现对list求和及求积
2018/11/14 Python
python pandas生成时间列表
2019/06/29 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
2015年关爱留守儿童工作总结
2015/05/22 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
node快速搭建后台的实现步骤
2022/02/18 NodeJs