PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法_javascript技巧

高洛峰
高洛峰 原创
2017-02-24 17:20:30 1250浏览

这篇文章主要介绍了vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法,非常不错,具有参考借鉴价值,,需要的朋友可以参考下

上一篇文章介绍了vuejs实现的简单分页,如果我有几个页面都需要有分页效果,不可能每个页面都去复制一下这段代码吧,意思是封装一下,变成通用的组件。

首先使用基础 Vue 构造器,创建一个“子类”,Vue.extend( options )

var barHtml = ''+
   '
    '+    '1">上一页'+    '上一页'+    ''+     '{{ index }}'+    ''+    '下一页'+    '下一页'+    '
  • {{all}}
  • '+    '
'+   '

';  var navBar = Vue.extend({  template:barHtml,  props:['all','cur'],  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   }   },  methods: {   btnclick: function(data){   if(data != this.cur){    this.cur = data;    this.$emit('btn-click',data);    }   },   pageClick: function(){   this.$emit('btn-click',this.cur);   }  },   });  window.pagenav = navBar;

这儿创建了一个全局的pagenav,可以在其它地方都可以调用。

html代码


 
 {{msg}}

css代码

.page-bar{
 margin:40px;
}
ul,li{
 margin: 0px;
 padding: 0px;
}
li{
 list-style: none
}
.page-bar ul{
 overflow: hidden;
}
.page-bar li{
 float: left;
}
.page-bar li:first-child>a {
 margin-left: 0px
}
.page-bar a{
 display: block;
 border: 1px solid #ddd;
 text-decoration: none;
 position: relative;
 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;
}

新建一个vue对象实例

var pageBar = new Vue({
 el: '#page',
 data: {
  all: 8, //总页数
  cur: 1,//当前页码
  msg:''
 },
 components:{
  'vue-nav':pagenav
 },
 watch: {
  cur: function(oldValue , newValue){
  console.log('监听cur前与后的值:');
  console.log(arguments);
  }
 }, 
 methods:{
  listenDate:function(data){
  this.cur = data;
  this.msg = '你点击了'+data+ '页';
  }
 }
 })

简单的用js封装了一下分页组件。

实现效果












   {{msg}}

 var barHtml = ''+    '
    '+    '1">上一页'+    '上一页'+    ''+     '{{ index }}'+    ''+    '下一页'+    '下一页'+    '
  • {{all}}
  • '+    '
'+   '

';  var navBar = Vue.extend({  template:barHtml,  props:['all','cur'],  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   }   },  methods: {   btnclick: function(data){   if(data != this.cur){    this.cur = data;    this.$emit('btn-click',data);    }   },   pageClick: function(){   this.$emit('btn-click',this.cur);   }  },   });  window.pagenav = navBar;  var pageBar = new Vue({  el: '#page',  data: {   all: 8, //总页数   cur: 1,//当前页码   msg:''  },  components:{   'vue-nav':pagenav  },  watch: {   cur: function(oldValue , newValue){   console.log('监听cur前与后的值:');   console.log(arguments);   }  },   methods:{   listenDate:function(data){   this.cur = data;   this.msg = '你点击了'+data+ '页';   }  }  })

以上所述是小编给大家介绍的vuejs2.0实现分页组件使用$emit进行事件监听数据传递,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHP中文网的支持!

更多vuejs2.0实现分页组件使用$emit进行事件监听数据传递相关文章请关注PHP中文网!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。