Vue + elementUI实现动态面包屑

后台接口输出json:

{
  "success": true,
  "code": 20000,
  "message": "成功",
  "data": {
    "menus": [
      {
        "mid": "1",
        "title": "数据统计",
        "icon": "el-icon-s-data",
        "path": "/welcome/",
        "parentMid": "0",
        "createTime": "2020-10-14 10:37:46",
        "updateTime": "2020-10-14 10:37:49",
        "children": []
      },
      {
        "mid": "2",
        "title": "用户管理",
        "icon": "el-icon-s-custom",
        "path": "/user",
        "parentMid": "0",
        "createTime": "2020-10-14 10:39:31",
        "updateTime": "2020-10-14 10:39:32",
        "children": [
          {
            "mid": "21",
            "title": "用户列表",
            "icon": "el-icon-document",
            "path": "/user/",
            "parentMid": "2",
            "createTime": "2020-10-14 10:57:12",
            "updateTime": "2020-10-14 10:57:13"
          },
          {
            "mid": "22",
            "title": "用户添加",
            "icon": "el-icon-edit-outline",
            "path": "/user/save/",
            "parentMid": "2",
            "createTime": "2020-10-14 10:57:15",
            "updateTime": "2020-10-14 10:57:17"
          }
        ]
      }
    ]
  }
}

ElementUI面包屑:

<!-- 面包屑 -->
<el-breadcrumb separator-class="el-icon-arrow-right">
	<el-breadcrumb-item :to="{ path: '/welcome'}" @click="clearRouter">首页</el-breadcrumb-item>
	<el-breadcrumb-item v-for="item in breadcrumbList" :key="item.path">
		{{item.title}}
	</el-breadcrumb-item>
</el-breadcrumb>

computed计算属性:

computed: {
	// 动态面包屑
	breadcrumbList() {
		let breadcrumbs = []
		// 获取的菜单列表
		let menuList = this.menuList
		// 获取面包屑路由菜单对象
		this.indexBreadcrumbs.map(item => {
			for (let i = 0; i < menuList.length; i++) {
				// 如果是有二级菜单
				if (menuList[i].children !== undefined && menuList[i].children.length > 0 && item == menuList[i].path) {
					breadcrumbs.push(menuList[i])
					continue
				}
				// 如果没有二级菜单
				else if(menuList[i].children !== undefined && menuList[i].children.length == 0 && item == menuList[i].path) {
					breadcrumbs.push(menuList[i])
					break
				}
				// 如果是二级菜单
				else {
					for(let j = 0; j < menuList[i].children.length; j++) {
						if (item == menuList[i].children[j].path) {
							breadcrumbs.push(menuList[i].children[j]);
							break
						}
					}
				}
			}
		})
		return breadcrumbs
	}
}

话不多说,来看最终效果:
效果图

### 回答1: Spring Boot 和 Vue 结合使用,可以通过 Element UI实现动态路由。 具体步骤如下: 1. 在 Spring Boot 中,定义一个 API 接口,用于返回动态路由的配置信息,例如菜单列表、权限信息等。 2. 在 Vue 中,使用 axios 等工具调用该 API 接口获取动态路由的配置信息。 3. 在 Vue 中,使用 vue-router 来实现路由功能。在路由配置中,使用获取到的动态路由信息来动态生成路由。例如,使用菜单列表来生成菜单路由,使用权限信息来控制路由的访问权限等。 4. 在 Vue 中,结合 Element UI 的组件,可以实现一些常见的路由功能,例如面包屑导航、菜单栏等。 综上所述,通过 Spring Boot、VueElement UI 的结合,可以实现动态路由功能,从而实现更加灵活、可扩展的前端页面管理。 ### 回答2: Spring Boot是一个开发框架,Vue是一个前端框架,Element UI是一个UI组件库,如何实现动态路由呢? 首先,在Spring Boot后端,需要定义一个接口来获取动态路由的数据。可以使用一个数据库表来存储路由信息,如路由路径、组件名称、图标等。然后,通过编写一个控制器类,来处理获取动态路由数据的请求。在该控制器类中,可以调用相应的服务类或数据访问层来获取路由数据,并返回给前端。 接下来,在Vue前端项目中,可以使用Vue Router来实现动态路由。可以在项目的入口文件(如main.js)中,通过发送请求获取动态路由数据。可以使用axios等库来发送请求,获取后端返回的动态路由数据。获取到数据后,可以通过遍历的方式,动态地把路由配置项添加到Vue Router中。 同时,在项目中引入Element UI组件库,可以使用其中的菜单、导航等组件,来展示动态路由。可以根据获取的动态路由数据,来生成菜单和导航栏的数据,并将其展示在页面中。 为了实现动态路由的跳转,可以使用Vue Router中的路由守卫(如beforeEach),在路由跳转之前判断是否有权限访问该路由。可以根据当前用户的权限信息,来判断是否有权限访问该路由。如果没有权限,则可以跳转到其他页面或者显示相应的提示信息。 总结来说,通过在Spring Boot后端定义接口获取动态路由数据,并在Vue前端项目中将其配置到Vue Router中,配合使用Element UI的菜单、导航组件,就可以实现Spring Boot、VueElement UI动态路由。 ### 回答3: 要实现动态路由,我们可以结合使用Spring Boot、VueElement UI。 首先,在Spring Boot后端,我们需要建立一个API接口,用于获取动态路由的数据。这个接口可以返回一个JSON对象,包含了多个路由对象的信息,如路由名称、路径、组件等。 接下来,在Vue前端,我们可以使用Element UI的导航菜单组件来实现动态路由。首先,我们需要在Vue项目中安装Element UI,并引入导航菜单组件。然后,在主页面组件中,我们可以通过调用后端的API接口获取动态路由数据,然后根据返回的数据动态生成导航菜单。可以使用Vue Router来管理路由,并使用 `<router-view>` 标签来展示对应的页面组件。 在生成导航菜单时,我们可以使用递归组件来实现无限嵌套的导航菜单结构。每个导航菜单项可以绑定点击事件,当用户点击菜单项时,可以通过Vue Router进行路由跳转,展示对应的页面组件。 为了保证路由权限控制,我们可以在后端API接口中加入用户权限验证的逻辑。在前端,我们可以根据用户的角色或权限信息动态生成导航菜单,只展示用户有权限访问的路由。 总结来说,使用Spring Boot提供API接口获取动态路由数据,然后在Vue前端使用Element UI的导航菜单组件构建动态路由。通过递归组件生成无限嵌套的导航菜单,并通过Vue Router实现路由跳转。同时,可以结合用户权限信息进行路由权限控制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值