Tabs

引入

import { Tabs , TabsBody , TabsHead , TabsItem , TabsPane } from 'lengzi'

使用组件

Vue.component('g-tabs',Tabs)
Vue.component('g-tabs-body',TabsBody)
Vue.component('g-tabs-head',TabsHead)
Vue.component('g-tabs-item',TabsItem)
Vue.component('g-tabs-pane',TabsPane)

使用方法

简单用法

思路

Tabs组件上声明一个eventBus,并将其注入到其内部的组件中,监听事件。子组件发生的操作先告知父组件,再由父组件通知子组件该进行的操作。

Tabs组件
data(){
  return {
    eventBus: new Vue()
  }
},
provide(){
  return {
    eventBus: this.eventBus
  }
},
mounted(){
  this.eventBus.$on('getMessage',(m,n)=>{
    this.eventBus.$emit('update:selected',m,n)
  })
}
TabsItem子组件,当被点击时,将组件的信息传递给父组件
mounted(){
  this.eventBus.$on('update:selected',(name)=>{
    if(this.name === name){
      this.active = true
    }else{
      this.active = false
    }
  })
},
methods:{
  xxx(){
    if(this.disabled){
      return 
    }
    this.eventBus.$emit('getMessage',this.name,this)
  }
}