利用VUE框架,实现列表分页功能示例代码


Posted in Javascript onJanuary 12, 2017

先来看一下效果图:

利用VUE框架,实现列表分页功能示例代码 

利用VUE框架,实现列表分页功能示例代码 

利用VUE框架,实现列表分页功能示例代码

功能描述:

1. 点击页面序号跳转到相应页面;

2. 点击单左/单右,向后/向前跳转一个页面;

3. 点击双左/双右,直接跳转到最后一页/第一页;

4. 一次显示当前页面的前三个与后三个页面;

5. 始终显示最后一个页面;

HTML:

<!-- 分页开始 -->
<div class="u-pages" style="margin-bottom:20px; margin-top:10px;">
 <ul>
   <li v-if="showPre" class="crt"><a v-on:click="jumpFirst(cur)"> << </a></li>
   <li v-if="showPre" class="crt"><a v-on:click="minus(cur)"> < </a></li>

   <template v-for="index in indexs" >
     <li class="{{classRenderer(index)}}">
       <a v-on:click="btnClick(index)" >{{index}}</a>
     </li>
   </template>

   <li v-if="showMoreTail" class="crt">..</li>
   <li class="{{classRenderer(pageNo)}}"><a @click="btnClick(pageNo)">{{pageNo}}</a></li>
   <li v-if="showTail" class="crt"><a v-on:click="plus(cur)">></a></li>
   <li v-if="showTail" class="crt"><a v-on:click="jumpTail(cur)">>></a></li>

 </ul>
</div>
<!-- 分页结束 -->

HTML方法分析: 

1、

<li class="{{classRenderer(index)}}">

classRenderer()方法实现了当点击页面索引是,点击页面获得选中效果

2、

<a v-on:click="btnClick(index)" >{{index}}</a>

btnClick()方法,实现了点击页面索引,跳转到相应页面

showPre showTail

showPre控制跳转到第一页与跳转到前一页的按钮的显示与消除

showTail控制跳转到最后一页与跳转到后一页的按钮的显示与消除

cur

记录当前页序号

jumpFirst(cur) minus(cur) plus(cur) jumpTail(cur)

实现按钮跳转功能

JS:

module.exports = {
    data: function () {
      return {
        cur:1,
        showTail:true,
        showMorePre: false,
        showMoreTail: false,       

      }
    },
    methods:{
    jumpFirst:function(data){
        var $this = this;
        data = 1;
        $this.cur = data;
        if (data == 1 )
        {
          $this.$set("showPre", false);
        }else
        {
          $this.$set("showPre", true);
        }
        $this.$am.ajax({
          url:window.$ApiConf.api_order_detail_list,
          type:'GET',
          data:{start: 1},
          success: function(data){
            console.log(data);
            $this.$set("records", data.record.records);
            $this.$set("start", data.record.query.start);
            $this.$set("total", data.record.query.total);
            $this.$set("limit", data.record.query.limit);
          }
        })
        $this.$set("showTail", true);
        return data;
      },
      minus:function(data){
        var $this = this;
        data--;
        $this.cur = data;
        $this.$set("showTail", true);
        if(data == 1){
          $this.$set("showPre", false);

        }else{
          $this.$set("showPre", true);
        }

        $this.$am.ajax({
          url:window.$ApiConf.api_order_detail_list,
          type:'GET',
          data:{start: 1 + $this.limit * (data-1) },
          success:function(data){
            console.log(data);
            $this.$set("records", data.record.records);
            $this.$set("start", data.record.query.start);
            $this.$set("total", data.record.query.total);
            $this.$set("limit", data.record.query.limit);
          }
        })
        return data;
      },
      plus: function(data){
        var $this = this;
        data++;
        $this.cur = data;
        $this.$set("showPre", true);
        if (data == $this.pageNo)
        {
          $this.$set("showTail", false);
        }else
        {
          $this.$set("showTail", true);
        }
        $this.$am.ajax({
          url:/* 这里写上你自己请求数据的路径 */,
          type:'GET',
          data:{start: 1 + $this.limit * (data-1) },
          success:function(data){
            console.log(data);
            $this.$set("records", data.record.records);
            $this.$set("start", data.record.query.start);
            $this.$set("total", data.record.query.total);
            $this.$set("limit", data.record.query.limit);
          }
        })
        return data;
      },
      classRenderer:function(index){
        var $this = this;
        var cur = $this.cur;
        if(index != cur){
          return 'crt';
        }
        return '';
      },
      btnClick:function(data){
        var $this = this;
        if(data == 1){
          $this.$set("showPre", false);

        }else{
          $this.$set("showPre", true);
        }
        if (data == $this.pageNo)
        {
          $this.$set("showTail", false);
        }else
        {
          $this.$set("showTail", true);
        }
        if (data != $this.cur)
        {
          $this.cur = data;
          $this.$am.ajax({
            url:window.$ApiConf.api_order_detail_list,
            type:'GET',
            data:{start: 1 + $this.limit * (data-1) },
            success:function(data){
              console.log(data);
              $this.$set("records", data.record.records);
              $this.$set("start", data.record.query.start);
              $this.$set("total", data.record.query.total);
              $this.$set("limit", data.record.query.limit);
            }
          })
        }
      },
      jumpTail:function(data){
        var $this = this;
        data = $this.pageNo;
        $this.cur = data;
        if (data == $this.pageNo)
        {
          $this.$set("showTail", false);
        }else
        {
          $this.$set("showTail", true);
        }
        $this.$am.ajax({
          url:window.$ApiConf.api_order_detail_list,
          type:'GET',
          data:{start: 1 + $this.limit * (data-1) },
          success:function(data){
            console.log(data);
            $this.$set("records", data.record.records);
            $this.$set("start", data.record.query.start);
            $this.$set("total", data.record.query.total);
            $this.$set("limit", data.record.query.limit);
          }
        })
        $this.$set("showPre", true);
        return data;
      },
     computed: {
      //*********************分页开始******************************//
      indexs: function(){
        var $this = this;
        var ar = [];

        if ($this.cur > 3)
        {
          ar.push($this.cur - 3);
          ar.push($this.cur - 2);
          ar.push($this.cur - 1);

        }else
        {
          for (var i = 1; i < $this.cur; i++)
          {
            ar.push(i);
          }
        }
        if ($this.cur != $this.pageNo)
        {
          ar.push($this.cur);
        }

        if ( $this.cur < ( $this.pageNo - 3 ) )
        {
          ar.push($this.cur + 1);
          ar.push($this.cur + 2);
          ar.push($this.cur + 3);
          if ( $this.cur < ( $this.pageNo - 4 ) )
          {
            $this.$set("showMoreTail", true);
          }
        }else
        {
          $this.$set("showMoreTail", false);
          for (var i = ($this.cur + 1); i < $this.pageNo; i++)
          {
            ar.push(i);
          }
        }
        return ar;
      }
      //*********************分页结束******************************//
    }
}

JS功能分析:indexs用于记录一共有多少页面

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Tips 带三角可关闭的文字提示
Oct 06 Javascript
文字不间断滚动(上下左右)实例代码
Apr 21 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
Jul 24 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
Aug 31 Javascript
移动端滑动插件Swipe教程
Oct 16 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
Django+Vue跨域环境配置详解
Jul 06 Javascript
Element Rate 评分的使用方法
Jul 27 Javascript
vue.js 解决v-model让select默认选中不生效的问题
Jul 28 Javascript
Vue 构造选项 - 进阶使用说明
Aug 14 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
js中常用的Math方法总结
Jan 12 #Javascript
Vue数据驱动模拟实现4
Jan 12 #Javascript
移动端点击态处理的三种实现方式
Jan 12 #Javascript
js手机号批量滚动抽奖实现代码
Apr 17 #Javascript
js图片轮播手动切换特效
Jan 12 #Javascript
原生js实现倒计时功能(多种格式调用)
Jan 12 #Javascript
JavaScript定义全局对象的方法示例
Jan 12 #Javascript
You might like
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
django-初始配置(纯手写)详解
2019/07/30 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
python 如何实现遗传算法
2020/09/22 Python
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
Linux Interview Questions For software testers
2012/06/02 面试题
学校学习雷锋活动总结
2014/07/03 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
董事会决议范本
2015/07/01 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
导游词之崇武古城
2019/10/07 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
python周期任务调度工具Schedule使用详解
2021/11/23 Python