Element-UI 寫后台【三】 tags標簽聯動


1、 引入tags

<el-tag
  :key="tag"
  v-for="tag in dynamicTags"
  closable
  :disable-transitions="false"
  @close="handleClose(tag)">
  {{tag}}
</el-tag>

  handleClose(tag) {
        this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      },

2、 vuex

state:{
tabList:[ //存放tab
 //初始頁面
       {
                path: '/',
                label: '首頁',
                name: 'home',
                icon: 'home',

         }

]
}
mutations:{
    
  selectMenu(state,value){
       //1、默認有一個首頁不被刪除的,
      //2、【如果不是首頁的情況下】點擊其他頁面添加進來。
     //3、如果點擊多次,會放進來多次。所以需要一個去重‘
 if (value.name !== 'home'){
      let result = state.tabList.findIndex(item => item.name === value.name)
     result === -1 ? state.tabList.push(value) : ""
    
}
   
}    

}
//處理Tabs
 closeTab(state, value){
     let result = state.tabList.findIndex(item => item.name === value.name)
   state.tabList.splice(result, 1)
}

             

4、tabs組件

 

          <el-tag
                :key="tag.name"
                v-for="tag in tags"
                closable
                :disable-transitions="false"
          :closeable="tag.name !== 'home'
                @close="handleClose(tag)">
            {{tag.label}}
        </el-tag>

import {mapState,mapMutations} from 'vuex'

  computed: {
           ...mapState({
               tags:state=>state.tab.tabList
           })
        },

 methods: {
            ...mapMutations({
                close:'closeTab'
            }),
            handleClose(tag) {
                this.close(tag)
            },

        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM