vue + Element UI 动态Breadcrumb 面包屑的制作

效果


在这里插入图片描述

面包屑用于显示当前页面的路径,快速返回之前的任意页面。

一、路由配置

代码如下:

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

const VueRouterPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(to) {
  return VueRouterPush.call(this, to).catch(err => err)
}

const routes = [
  { 
    path: '/', 
    component: ()=>import("@/views/LoginView") 
  },
  { 
    path: '/login', 
    name: "login",
    component: ()=>import("@/views/LoginView"),
  },
  {
    path: '/home',
    name:"home",
    component: ()=>import("@/views/HomeView"),
    meta:{
      title:'首页',
      path:"/home"
    },
    children: [
      { //主页
        path: '/home', 
        component: ()=>import("@/views/main/MainView"),
        meta:{
          title:'',
          path:"/home"
        }
      }, 
      { //个人信息
        path: 'userinfo', 
        component: ()=>import("@/views/userinfo/UserInfo"), 
        meta:{
          title:'个人中心',
          path:"/userinfo"
        }
      },  
      { //分析页
        path: 'analyse', 
        component: ()=>import("@/views/Analyse"),
        meta:{
          title:'分析页',
          path:"/analyse"
        }
      },  
    ]
  }
]

const router = new VueRouter({
  routes
})

export default router

这里使用了router的meta属性,为其设置名为title的属性,用来当作面包屑的展示名称,当然,也可以直接使用路由的name属性。

二、使用步骤

1.Breadcrumb.vue:

代码如下:

<template>
  <div class="Bread">
    <el-breadcrumb separator="/">
      <!-- to为点击跳转 title为路由中的meta属性定义的标题 -->
      <el-breadcrumb-item v-for="(item, index) in breadList" :key="index" :to="item.meta.path">
        {{ item.meta.title }}
      </el-breadcrumb-item>
    </el-breadcrumb>
  </div>
</template>

<script>
export default {
  data() {
    return {
      breadList: [],
    };
  },
  watch: {
    $route() {//监听$route
      this.getBreadcrumb();
    },
  },
  methods: {
    isHome(route) {
      return route.name === "home";
    },
    getBreadcrumb() {
      let matched = this.$route.matched;
      //如果不是首页
      if (!this.isHome(matched[0])) {
        matched = [].concat(matched);
      }
      this.breadList = matched;
    },
  },
  created() {
    //生命周期中调用获取数据的方法
    this.getBreadcrumb();
  },
};
</script>

<style>
.Bread{
  height: 30px;
  float: left;
}
</style>

2.在页面中使用

代码如下:

<!-- 头部 -->
<template>
  <div id="app">
    <div class="header">
      <h1>欢迎使用My-Vue-Admin!</h1>
      <div class="full-screen">
        <Avatar></Avatar>
        <FullScroll></FullScroll>
      </div>
    </div>
    <div class="Bread">
      <BreadVue></BreadVue>
    </div>
  </div>
</template>

<script>
// 导入ScreenFull组件,控制全屏
import FullScroll from '@/components/Header/ScreenFull.vue'
// 导入头像组件
import Avatar from '@/components/Header/AvatarHeader.vue'
// 导入面包屑
import BreadVue from '../components/Bread.vue'
export default {
  components: {
    FullScroll,
    Avatar,
    BreadVue
  },
  data(){
    return{
      breadList:null,
    }
  },
}
</script>

<style lang="less" scoped>
#app {
  background-color: #ffffff;
  margin: 0;
  padding: 0 0 18px 0px;
  box-shadow: 0px 0px 8px 1px #e6e6e6;
  overflow: hidden;
}
.header h1 {
  margin-bottom: 5px;
  height: 50px;
  float: left;
  margin-left: 40px;
}
.header {
  text-align: left;
  overflow: hidden;
  text-align: right;
  box-shadow: 0px 0px 5px 0px #e6e6e6;
}
.header i {
  float: right;
}
#app h1 {
  margin-top: 0;
}
.full-screen:before {
  display: flex;
  overflow: hidden;
  padding-top: 20px;
}
/deep/.el-breadcrumb {
  margin: 20px 0 0 40px;
}
</style>


总结

文件目录

在这里插入图片描述
vue-router和breadcrumb面包屑结合,实现展示当前路径下的路由信息。关键是利用route对象的matched属性,得到前匹配的路径中所包含的所有片段所对应的配置参数对象数组,然后遍历数组,并利用数组中对象的信息,展示到面包屑中。每个对象的path属性为其对应的路由路径,meta属性为其元数据对象。
在这里插入图片描述

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
VueUI 框架 Element UI 提供了面包屑组件 el-breadcrumb,可以方便地实现面包屑导航功能。同时,Element UI 也提供了国际化的支持,可以让我们方便地实现面包屑的国际化。 以下是在 Vue 项目使用 el-breadcrumb 组件实现面包屑导航的代码: ```vue <template> <div> <el-breadcrumb separator="/"> <el-breadcrumb-item :to="{ path: '/' }">{{ $t('home') }}</el-breadcrumb-item> <el-breadcrumb-item :to="{ path: '/list' }">{{ $t('list') }}</el-breadcrumb-item> <el-breadcrumb-item>{{ $t('detail') }}</el-breadcrumb-item> </el-breadcrumb> </div> </template> <script> export default { name: 'BreadcrumbDemo', data() { return {}; }, }; </script> ``` 在上面的代码,我们使用 el-breadcrumb 组件来包含多个 el-breadcrumb-item 组件,每个 el-breadcrumb-item 组件代表一个面包屑导航项,可以通过 :to 属性设置跳转链接。 接下来,我们实现面包屑导航的国际化。在 Vue 项目使用 Element UI 的国际化需要先引入 Element UI 的语言包,然后在 Vue 的配置选项设置语言包和翻译函数。以下是实现面包屑导航国际化的代码: ```javascript import Vue from 'vue'; import ElementUI from 'element-ui'; import locale from 'element-ui/lib/locale/lang/en'; // 引入英文语言包 Vue.use(ElementUI, { locale }); Vue.prototype.$t = function(key) { return this.$i18n.t(key); }; new Vue({ i18n, render: h => h(App), }).$mount('#app'); ``` 在上面的代码,我们引入了 Element UI 的英文语言包,并在 Vue 配置选项设置语言包和翻译函数。之后,我们就可以在 el-breadcrumb-item 组件使用 $t 函数来进行国际化翻译了。我们只需要在翻译文件添加相应的翻译内容即可,例如: ```javascript { "home": "Home", "list": "List", "detail": "Detail" } ``` 这样,我们就成功地实现了 el-breadcrumb 面包屑面包屑国际化功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wh1T3ZzT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值