国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Vue2+Element ui通用后臺】面包屑和tag功能

這篇具有很好參考價值的文章主要介紹了【Vue2+Element ui通用后臺】面包屑和tag功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

面包屑

Element ui 面包屑:顯示當(dāng)前頁面的路徑,快速返回之前的任意頁面,完成效果如下:
vue2面包屑,Vue學(xué)習(xí)筆記,vue.js,elementui

我們之前把頭部的代碼封裝到了 CommonHeader.vue 中,面包屑部分直接寫死了一個首頁,我們可以把官網(wǎng)的面包屑代碼先直接復(fù)制過來:

<el-breadcrumb separator="/">
        <el-breadcrumb-item :to="{ path: '/' }">首頁</el-breadcrumb-item>
        <el-breadcrumb-item><a href="/">活動管理</a></el-breadcrumb-item>
        <el-breadcrumb-item>活動列表</el-breadcrumb-item>
        <el-breadcrumb-item>活動詳情</el-breadcrumb-item>
</el-breadcrumb>

之前我們在 store/tab.js 中我們寫了頭部的是否開關(guān),這里我們增加面包屑的數(shù)據(jù)。我們點擊左側(cè)菜單,面包屑會依次展示菜單內(nèi)容,所以數(shù)據(jù)結(jié)構(gòu)和菜單差不多,我們直接復(fù)制菜單的數(shù)據(jù)

export default {
    state:{
        isCollapse:false,//控制菜單展開/收起
        tabList:[
            {
                path: '/',
                name: 'home',
                label: '首頁',
                icon: 's-home',
                url: 'Home/home'
            },
        ]//面包屑數(shù)據(jù)
    },
    mutations:{
        ......
    }
}

當(dāng)點擊左側(cè)菜單時,面包屑的內(nèi)容相應(yīng)修改,所以我們修改 CommonAside.vue ,之前已經(jīng)有點擊菜單的方法,我們修改 menuClick,使用 this.$store.commit 來調(diào)用 selectMenu 方法,然后傳入點擊菜單的數(shù)據(jù)

menuClick(item) {
      ......
      this.$store.commit('selectMenu',item)
}

我們在 tab.js 中增加 selectMenu 方法

// 更新面包屑數(shù)據(jù)
        selectMenu(state,val){
            // 判斷添加數(shù)據(jù)是否為首頁
            if(val.name !== 'home'){
                // 判斷如果不存在
                const index = state.tabList.findIndex(item => item.name === val.name )
                // 如果不存在
                if(index === -1){
                    state.tabList.push(val)
                }
            }
        }

由于面包屑默認(rèn)數(shù)據(jù)就是首頁,所以 selectMenu 方法先判斷是不是首頁,不是首頁再執(zhí)行下面的代碼

然后判斷 tabList 中是否存在所點擊的菜單數(shù)據(jù),如果存在就沒有必要重復(fù)添加。是否存在可以使用 findIndex,傳入一個函數(shù),如果存在則返回一個索引,如果不存在返回 -1

接下來我們在 CommonHeader.vue 中使用面包屑數(shù)據(jù),當(dāng)然我們可以使用this.$store.state.tab.tabList來獲取,我們學(xué)習(xí)一個更簡單的方法,使用 mapstate

在這里插入代碼片

tags 是我們起的數(shù)據(jù)別名,后邊跟一個函數(shù),返回的就是我們需要的數(shù)據(jù),由于返回的是一個對象,我們使用擴展運算符 ...將 mapState 進(jìn)行結(jié)構(gòu)

然后面包屑內(nèi)容使用 v-for 循環(huán) tags 即可

<el-breadcrumb separator="/">
	<el-breadcrumb-item v-for="item in tags" :to="{ path: item.path }">{{item.label}}</el-breadcrumb-item>
</el-breadcrumb>

樣式需要進(jìn)行修改
vue2面包屑,Vue學(xué)習(xí)筆記,vue.js,elementui
修改哪個 class 可以查看元素
vue2面包屑,Vue學(xué)習(xí)筆記,vue.js,elementui

<template>
  <div class="header-container">
    <div class="l-content">
      <el-button style="margin-right: 20px" icon="el-icon-menu" size="mini" @click="handleMenu"></el-button>
      ......
    </div>
    ......
  </div>
</template>

......

<style lang="less" scoped>
.header-container {
   ......
  .l-content{
    display: flex;
    align-items: center;
    /deep/.el-breadcrumb__item{
      .el-breadcrumb__inner{
        font-weight: normal;
        &.is-link{
          color: #666666;
        }
      }
      &:last-child{
        .el-breadcrumb__inner{
          color: #ffffff;
        }
      }
    }
  }
}
</style>

tag

Element ui Tag

tag 功能展示如下,點擊左側(cè)路由,tag 增加,點擊相應(yīng) tag 跳轉(zhuǎn)對應(yīng)路由,tag 可以刪除
vue2面包屑,Vue學(xué)習(xí)筆記,vue.js,elementui

我們把這個功能封裝成組件,在 components 下新建 CommonTag.vue,代碼如下:

<template>
  <div class="tabs">
    <el-tag
        v-for="(item,index) in tags"
        :key="item.path"
        :closable="item.name !== 'home'"
        :effect="$route.name === item.name?'dark':'plain'"
        size="small"
        @click="handleClick(item)"
        @close="handleClose(item,index)">
      {{ item.label }}
    </el-tag>
  </div>
</template>

<script>
import { mapState,mapMutations } from 'vuex'
export default {
  name:'CommonTag',
  data(){
    return {}
  },
  computed:{
    ...mapState({
      tags: state => state.tab.tabList
    })
  },
  methods:{
    ...mapMutations(['closeTag']),
    handleClick(item){
      this.$router.push({name:item.name});
    },
    handleClose(item,index){
      // 調(diào)用store中的mutation,刪除點擊的項
      this.closeTag(item)
      // 刪除后的tags長度
      const length = this.tags.length;
      // 刪除之后的跳轉(zhuǎn)邏輯
      // 1、如果不是刪除的當(dāng)前路由。根據(jù)name判斷是否相等。當(dāng)前路由不一定是最后一個
      if(item.name !== this.$route.name){
        // 那么直接刪除該項即可
        return
      }
      // 2、如果刪除的當(dāng)前路由,即選中的tag
      // 2.1 當(dāng)前路由在最后,也就是刪除最后一項
      if(index === length){
        // 那么需要跳轉(zhuǎn)到前一項
        this.$router.push({
          name: this.tags[index -1].name
        })
      }else{
        // 2.2 當(dāng)前路由不在最后一項
        // 那么跳轉(zhuǎn)到后一項
        this.$router.push({
          name: this.tags[index].name
        })
      }
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="less" scoped>
.tabs{
  padding: 20px;
  .el-tag{
    margin-right: 15px;
    cursor: pointer;
  }
}
</style>

我們直接復(fù)制 Element UI 中的 tag 代碼復(fù)制過來,因為數(shù)據(jù)和面包屑的內(nèi)容是一樣的,所以我們可以直接獲取 vuex 中的面包屑數(shù)據(jù),進(jìn)行 v-for 循環(huán)即可

closable 設(shè)置是否可關(guān)閉,首頁不可關(guān)閉,其他都可以

effect 設(shè)置主題,如果是當(dāng)前路由則使用深色主題

因為使用了$route.name === item.name?'dark':'plain' 即路由name 是否和當(dāng)前 tag name 相同,所以 router / index.js 中需要給路由添加 name 屬性

//2、將路由與組件進(jìn)行映射
const routes = [
    {
        //主路由
        path: '/',
        component: Main,
        redirect: '/home',
        children: [
            {path: 'home', name: 'home', component: Home},// 主頁
            {path: 'user', name: 'user', component: User},// 用戶管理
            {path: 'mall', name: 'mall', component: Mall},// 商品管理
            {path: 'page1', name: 'page1', component: PageOne},// 頁面1
            {path: 'page2', name: 'page2', component: PageTwo},// 頁面2
        ]
    }
]

然后實現(xiàn)點擊事件,點擊相應(yīng) tag 應(yīng)該跳轉(zhuǎn)到相應(yīng)路由。在 tag 上增加 click 事件,傳入數(shù)據(jù),加入路由即可

點擊刪除按鈕有一個相應(yīng)的事件(看官方文檔最后),在 tag 上增加 close 事件。功能相對復(fù)雜,需要分為幾種情況,注釋中都有

刪除數(shù)據(jù)本質(zhì)上是刪除 tabs.js 中的 tabList 數(shù)據(jù),所以修改 tabs.js

import {findIndex} from "core-js/internals/array-iteration";

export default {
    state:{
        isCollapse:false,//控制菜單展開/收起
        tabList:[
            {
                path: '/',
                name: 'home',
                label: '首頁',
                icon: 's-home',
                url: 'Home/home'
            },
        ]//面包屑數(shù)據(jù)
    },
    mutations:{
        ......
        // 刪除指定的 tag 數(shù)據(jù),第一個參數(shù)是固定的
        closeTag(state,item){
            const index = state.tabList.findIndex(val=>val.name === item.name);
            state.tabList.splice(index,1);
        }
    }
}

1、刪除的不是當(dāng)前路由
vue2面包屑,Vue學(xué)習(xí)筆記,vue.js,elementui
2、刪除的是當(dāng)前路由,當(dāng)前路由在最后

vue2面包屑,Vue學(xué)習(xí)筆記,vue.js,elementui
3、刪除的是當(dāng)前路由,當(dāng)前路由在中間
vue2面包屑,Vue學(xué)習(xí)筆記,vue.js,elementui文章來源地址http://www.zghlxwxcb.cn/news/detail-787162.html

到了這里,關(guān)于【Vue2+Element ui通用后臺】面包屑和tag功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • UI組件-面包屑簡介

    UI組件-面包屑簡介

    設(shè)計世界充滿了與食物相關(guān)的類比,例如漢堡菜單、Snackbars或面包屑。面包屑或面包屑路徑是一種導(dǎo)航元素,可幫助用戶了解他們在網(wǎng)站上的當(dāng)前位置。 1. 定義: 它們代表鏈接的水平列表,其中最后一個表示當(dāng)前位置,其余定義其“祖先”(父頁面、祖父頁面等)。面包屑

    2024年02月06日
    瀏覽(18)
  • Vue + ElementUI 動態(tài)生成面包屑導(dǎo)航教程

    在Web應(yīng)用程序中,面包屑導(dǎo)航是一種常用的導(dǎo)航方式,它可以幫助用戶更好地理解當(dāng)前頁面的位置和層次關(guān)系。在Vue項目中,結(jié)合ElementUI組件庫,我們可以很容易地實現(xiàn)一個動態(tài)生成面包屑導(dǎo)航的功能。本教程將介紹如何使用Vue + ElementUI來實現(xiàn)動態(tài)生成面包屑導(dǎo)航的功能。

    2024年02月06日
    瀏覽(16)
  • Vue實現(xiàn)面包屑功能(el-breadcrumb)

    Vue實現(xiàn)面包屑功能(el-breadcrumb)

    文章后面附效果圖 數(shù)據(jù)結(jié)構(gòu) 首先展示一下數(shù)據(jù)基礎(chǔ)結(jié)構(gòu) 紅色框框是默認(rèn)存在的數(shù)據(jù),其他數(shù)據(jù)就是通過選中側(cè)邊欄菜單進(jìn)行數(shù)據(jù)插入 關(guān)鍵數(shù)據(jù)字段為 path, meta 準(zhǔn)備側(cè)邊欄 首先需要自己準(zhǔn)備一個側(cè)邊欄 這邊就不進(jìn)行講解,上個效果圖 實現(xiàn)面包屑代碼 效果圖

    2024年02月11日
    瀏覽(20)
  • 【Vue2+Element ui通用后臺】菜單權(quán)限

    對于菜單權(quán)限我們需要解決以下問題: 1、不同的賬號登錄,有不同的菜單 2、通過輸入url地址來顯示頁面,所以應(yīng)該根據(jù)權(quán)限動態(tài)注冊路由 3、對于菜單數(shù)據(jù),在不同頁面之間的數(shù)據(jù)通信 現(xiàn)在項目中的菜單,我們是在 CommenAside 中寫死的,現(xiàn)在我們需要根據(jù)登錄后返回的權(quán)限

    2024年02月07日
    瀏覽(20)
  • 若依 vue前端 動態(tài)設(shè)置路由path不同參數(shù) 在頁面容器里打開新頁面(新路由),面包屑和標(biāo)簽頁標(biāo)題根據(jù)參數(shù)動態(tài)改變,面包屑多級標(biāo)題,側(cè)邊欄對應(yīng)菜單亮起

    若依 vue前端 動態(tài)設(shè)置路由path不同參數(shù) 在頁面容器里打開新頁面(新路由),面包屑和標(biāo)簽頁標(biāo)題根據(jù)參數(shù)動態(tài)改變,面包屑多級標(biāo)題,側(cè)邊欄對應(yīng)菜單亮起

    因為是在vue源碼的基礎(chǔ)上進(jìn)行修改,所以,就沒有復(fù)制代碼在文章上,采取的是截圖對比源碼和我修改的代碼片段。要麻煩你們自己手敲了。 場景:在費用配置列表中,點擊每一項的配置,都會在頁面容器內(nèi)部打開一個新頁面,所以新頁面的路徑一樣,根據(jù)傳的參數(shù)不同,面

    2024年01月16日
    瀏覽(29)
  • [VUE學(xué)習(xí)]權(quán)限管理系統(tǒng)前端vue實現(xiàn)9-動態(tài)路由,動態(tài)標(biāo)簽頁,動態(tài)面包屑

    [VUE學(xué)習(xí)]權(quán)限管理系統(tǒng)前端vue實現(xiàn)9-動態(tài)路由,動態(tài)標(biāo)簽頁,動態(tài)面包屑

    ? ? ? ? ? ? ? ? 在總體布局頁面添加router router-view 是 Vue Router 提供的組件,用于動態(tài)展示匹配到的路由組件內(nèi)容。 通過在合適的位置放置 router-view ,你可以根據(jù)路由路徑動態(tài)地渲染對應(yīng)的組件內(nèi)容。 ? ? ? ? ? ? ? ? ? ? 因為我們是多級頁面 之后動態(tài)路由也是多級的 如

    2024年02月13日
    瀏覽(22)
  • 【Vue項目搭建】修改【若依框架】的側(cè)邊欄、導(dǎo)航欄、面包屑樣式、修改全局頁面樣式

    【Vue項目搭建】修改【若依框架】的側(cè)邊欄、導(dǎo)航欄、面包屑樣式、修改全局頁面樣式

    掌握分寸感,找目標(biāo)一致的人協(xié)同你,有效地調(diào)配資源,就可以提高效率。 寫在前面的話 :博主最近想要搭建自己的前端若依項目,因此此系列博客會做一些記錄。我的項目gitee地址:?https://gitee.com/xuruicong/rachel-front-show 說明:只運行前端項目,只需要要下載官方項目http:

    2024年01月19日
    瀏覽(24)
  • js面包屑,如何制作面包屑,什么是面包屑,又如何去理解面包屑是什么呢,對于不會應(yīng)該怎么辦呢?這篇文章告訴你。

    js面包屑,如何制作面包屑,什么是面包屑,又如何去理解面包屑是什么呢,對于不會應(yīng)該怎么辦呢?這篇文章告訴你。

    ??博主:鍋蓋噠 ??文章核心: 帶你了解原生js面包屑框架 目錄大綱 1.面包屑的概念與框架地址 2.功能框架預(yù)覽于介紹 框架效果預(yù)覽: 頁面架構(gòu)代碼預(yù)覽: HTML頁面預(yù)覽: ?權(quán)限驗證介紹 3.面包屑的邏輯 ?下面就是面包屑邏輯 1.首先從login頁面進(jìn)入拿到渲染左側(cè)列表的值 2

    2024年02月14日
    瀏覽(38)
  • 【Vue2+Element ui通用后臺】整體布局、數(shù)據(jù)展示、axios封裝

    【Vue2+Element ui通用后臺】整體布局、數(shù)據(jù)展示、axios封裝

    我們新建 Home 組件來展示右側(cè)的內(nèi)容 整體布局我們使用layout布局,通過基礎(chǔ)的 24 分欄,迅速簡便地創(chuàng)建布局。由于左側(cè)占比較小,我們分為 8 和 16 即可 然后每個卡片樣式的部分,我們使用 Card 卡片 我們先增加一個個人信息的展示: 然后在App.vue 中給 p 標(biāo)簽去掉默認(rèn)樣式 在

    2024年02月14日
    瀏覽(23)
  • 利用Bootstrap的面包屑組件實現(xiàn)面包屑層次分級導(dǎo)航效果

    利用Bootstrap的面包屑組件實現(xiàn)面包屑層次分級導(dǎo)航效果

    可以用類breadcrumb實現(xiàn)面包屑層次導(dǎo)航效果。 當(dāng)使用 Bootstrap 構(gòu)建網(wǎng)頁時, breadcrumb 類用于創(chuàng)建面包屑導(dǎo)航(breadcrumb navigation),這是一種可視化導(dǎo)航元素,通常用于指示用戶當(dāng)前頁面在網(wǎng)站層次結(jié)構(gòu)中的位置。面包屑導(dǎo)航以層次結(jié)構(gòu)形式顯示,通常采用類似 “Home Products Ca

    2024年02月07日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包