栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

vuejs2.0实现一个简单的分页示例

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

vuejs2.0实现一个简单的分页示例

最近几个项目用上vue了项目又刚好需要一个分页的功能。于是百度发现几篇文章介绍的实在方式有点复杂,没耐心看自己动手写了一个。

用js实现的分页结果如图所示:

css

.page-bar{
  margin:40px;
}
ul,li{
  margin: 0px;
  padding: 0px;
}
li{
  list-style: none
}
.page-bar li:first-child>a {
  margin-left: 0px
}
.page-bar a{
  border: 1px solid #ddd;
  text-decoration: none;
  position: relative;
  float: left;
  padding: 6px 12px;
  margin-left: -1px;
  line-height: 1.42857143;
  color: #337ab7;
  cursor: pointer
}
.page-bar a:hover{
  background-color: #eee;
}
.page-bar a.banclick{
  cursor:not-allowed;
}
.page-bar .active a{
  color: #fff;
  cursor: default;
  background-color: #337ab7;
  border-color: #337ab7;
}
.page-bar i{
  font-style:normal;
  color: #d44950;
  margin: 0px 4px;
  font-size: 12px;
}

模版


  
  • 上一页
  • 上一页
  • {{ index }}
  • 下一页
  • 下一页
  • {{all}}

js

var pageBar = new Vue({
  el: '.page-bar',
  data: {
    all: 20, //总页数
    cur: 1,//当前页码
});

调用 new Vue({参数}) 就是创建了一个基本的组件,赋值给变量 pageBar.

el就是element的缩写,定位模版的位置.data就是数据了.

知道了总页数但是要显示页码还是要一番计算,所以显示页码就是计算属性了.

所以我们要用computed 

computed: {
    indexs: function(){
     var left = 1;
     var right = this.all;
     var ar = [];
     if(this.all>= 5){
      if(this.cur > 3 && this.cur < this.all-2){
   left = this.cur - 2
   right = this.cur + 2
      }else{
 if(this.cur<=3){
   left = 1
   right = 5
 }else{
   right = this.all
   left = this.all -4
 }
      }
     }
    while (left <= right){
      ar.push(left)
      left ++
    }
    return ar
    }
     
  }

 看一下页面显示出来的循环:

  • {{ index }}
  • v-for是循环渲染输出计算属性indexs.每一次循环的子元素赋值给index v-bind:class绑定class,当渲染到目前的角标的时候加个class v-on:click是绑定了事件,我把index当参数传进入了,后面做判断,默认传event事件.
    然后我们给Vue的选项里面再增加methods字段

    methods: {
        btnClick: function(data){//页码点击事件
          if(data != this.cur){
     this.cur = data 
          }
        },
        pageClick: function(){
          console.log('现在在'+this.cur+'页');
        }
      },

    组件交互

    组件写完了,问题来了,用户点击发生页面改变,你怎么通知其他组件作出相应的变化. 可以在页角发生改变的函数下,插一条语句通知其他组件。不过这种方法是很差的做法。可以使用

    watch: {
        cur: function(oldValue , newValue){
          console.log(arguments);
        }
      }

    观察了cur数据当它改变的时候,可以获取前后值。然后通知其他组件。

    完整的代码:

    
    
    
    
    
    
    
    
    
    
    .page-bar{
      margin:40px;
    }
    ul,li{
      margin: 0px;
      padding: 0px;
    }
    li{
      list-style: none
    }
    .page-bar li:first-child>a {
      margin-left: 0px
    }
    .page-bar a{
      border: 1px solid #ddd;
      text-decoration: none;
      position: relative;
      float: left;
      padding: 6px 12px;
      margin-left: -1px;
      line-height: 1.42857143;
      color: #337ab7;
      cursor: pointer
    }
    .page-bar a:hover{
      background-color: #eee;
    }
    .page-bar a.banclick{
      cursor:not-allowed;
    }
    .page-bar .active a{
      color: #fff;
      cursor: default;
      background-color: #337ab7;
      border-color: #337ab7;
    }
    .page-bar i{
      font-style:normal;
      color: #d44950;
      margin: 0px 4px;
      font-size: 12px;
    }
    
    
    
     
      
    • 上一页
    • 上一页
    • {{ index }}
    • 下一页
    • 下一页
    • {{all}}

     以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/89799.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号