element+vue之动态面包屑

实现效果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.封装组件

1.在components下建立breadcrumb.vue 文件
在这里插入图片描述
2.封装breadcrumb组件

<template>
  <div style="display: inline-block" class="navigation">
    <el-breadcrumb separator="/" style="font-size: 15px">
      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item :to="path">{{ parentMPName }}</el-breadcrumb-item>
      <el-breadcrumb-item v-if="ParameterName">//详情页面有的带参数需要加判断
      {{ ParameterName }}{{ title2 }}
      </el-breadcrumb-item>
      <el-breadcrumb-item v-else>{{ title }}</el-breadcrumb-item>
    </el-breadcrumb>
  </div>
</template>

<script>
export default {
  name: 'Navbar',
  props: {
    ParameterName: {
      type: String
    }
  },
  data () {
    return {
      title: '',
      title2: '',
      parentMPName: '',
      path: ''
    }
  },
  activated () {},
  created () {
    this.getBreadcrumb()
  },
  methods: {
    getBreadcrumb () {
      var meta = this.$route.meta
      this.title = meta.title
      this.title2 = meta.title2
      this.parentMPName = meta.parentMPName
      this.path = meta.parentPath
    }
  }
}
</script>

2.router.js文件

var router = new Router({
 routes: [{
   path: '/',
   name: 'Home',
   component: Home,
   children: [{
     path: '/',
     component: Index,
     name: 'Index',
     meta: {
      title: '首页'
     }
    },
    {
     name: 'SowDetail',
     path: '/Warehouse/components/SowDetail',
     component: () => import('@/views/Warehouse/components/SowDetail'),
     meta: {
      title: '播种墙详情',
      title2: '详情',
      parentMPName: '播种墙设置',
      parentPath: '/warehouse/sowList'
     }//三级页面带参数的详情页面
    },
   {
     path: '/QualityControl/components/RecordInfo/:hasEdit',
     component: () => import('@/views/QualityControl/components/RecordInfo'),
     name: 'RecordInfo',
     props: true,
     meta: {
      title: '接收记录',
      title2: '',
      parentMPName: '接收记录',
      parentPath: '/qualityControl/record'
     }//三级页面新增编辑页面
    },
    {
     path: '/PlanningStrategy/components/PickingOrderInfo/:hasEdit',
     component: () => import('@/views/PlanningStrategy/components/PickingOrderInfo'),
     name: 'PickingOrderInfo',
     props: true,
     meta: {
      title: '拣货路线配置',
      title2: '',
      parentMPName: '拣货路线配置',
      parentPath: '/PlanningStrategy/PickingOrder'
     }//三级页面不带参数的详情页面
    }
   ]
  },
  {
   path: '/Login',
   name: 'Login',
   component: Login
  }, {
   path: '/Error',
   name: 'Error',
   component: Error
  },

 ]
})

3.封装全局引用

主要是把全局引用的组件封装到js里 把这个js文件直接引入到main.js文件中 这样整个项目用到的全局组件就用不一个一个引入到main.js文件中了 如果不想这样 也可以直接把import breadcrumb from './components/Global/breadcrumb’引入到main.js文件中
在这里插入图片描述

import Vue from 'vue'

const requireComponent = require.context('./', false, /\.vue$/)

requireComponent.keys().forEach(fileName => {
  const componentConfig = requireComponent(fileName)

  // fileName   ./G-demo.vue
  const componentName = fileName
    .replace(/^\.\//, '')
    .replace(/\.\w+$/, '')
    .split('-')
    .join('')

  Vue.component(componentName, componentConfig.default || componentConfig)
})

再把这个index.js文件引入到main.js文件中

//在main.js
import './components/Global'

4. 二级页面直接用

`  <div class="title-wrapper">
        <breadcrumb></breadcrumb>
   </div>`

5. 三级页面

//ParameterName就写你要的值
 <breadcrumb :ParameterName="ParameterName"></breadcrumb>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于Vue 3和Element Plus的动态面包屑导航,你可以按照以下步骤进行实现: 1. 首先,安装所需的依赖: ```bash npm install vue@next vue-router@4 element-plus ``` 2. 在你的Vue项目中,创建一个新的组件来表示面包屑导航,比如`Breadcrumb.vue`。 3. 在`Breadcrumb.vue`组件中,导入所需的组件和路由相关的方法: ```javascript <template> <el-breadcrumb separator-class="el-icon-arrow-right"> <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item> <el-breadcrumb-item v-for="(route, index) in routes" :key="index" :to="route.to">{{ route.name }}</el-breadcrumb-item> </el-breadcrumb> </template> <script> import { useRouter } from 'vue-router'; export default { setup() { const router = useRouter(); const routes = router.currentRoute.value.matched.map((route) => ({ name: route.meta.title, to: route.path, })); return { routes, }; }, }; </script> ``` 4. 在你的路由配置文件中,为每个路由添加`meta`字段并指定对应的面包屑名称: ```javascript const routes = [ { path: '/', component: Home, meta: { title: '首页', }, }, { path: '/about', component: About, meta: { title: '关于我们', }, }, // 其他路由配置... ]; ``` 5. 在你的页面组件中,使用`Breadcrumb`组件来展示动态面包屑导航: ```javascript <template> <div> <Breadcrumb /> <!-- 其他页面内容... --> </div> </template> <script> import Breadcrumb from './Breadcrumb.vue'; export default { components: { Breadcrumb, }, }; </script> ``` 这样,当你切换不同的路由时,面包屑导航将会根据当前路由自动更新。注意:在Vue 3中,我们使用了Composition API的`setup`函数来实现逻辑,同时使用了`useRouter`方法来获取当前路由信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jiojio冲冲冲

能帮助你是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值