使用.vue文件代码写出如何点击该树菜单并获取子菜单跳转到页面,并实现对该菜单的子菜单实现增删改查
时间: 2024-10-03 13:01:26 浏览: 31
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
在Vue.js中,你可以使用`.vue`组件来构建树状菜单,并结合Vuex管理状态以及事件总线实现点击子菜单后的导航和数据操作。下面是一个简化的例子:
首先,在`.vue`组件中定义一个递归的数据结构表示树形菜单:
```html
<template>
<ul>
<li v-for="(item, index) in menuItems" :key="index">
<router-link :to="{ path: item.route }">{{ item.name }}</router-link>
<!-- 使用v-if判断是否有子菜单 -->
<ul v-if="item.subMenu">
<tree-menu-item :menu-items="item.subMenu" />
</ul>
</li>
</ul>
</template>
<script>
export default {
name: 'TreeMenuItem',
props: ['menuItems'],
// 省略其他部分...
}
</script>
```
这里我们假设`menuItems`是一个包含路由信息和子菜单的数组。
然后在组件内部,可以监听子菜单的点击事件,通过事件总线或者自定义方法触发导航和操作:
```javascript
<script>
export default {
methods: {
handleSubMenuClick(item) {
this.$emit('submenuSelected', item); // 触发事件,传递选中的子菜单项
// 这里可以根据item去Vuex store中进行增删改查操作
},
},
// ...省略其他部分...
}
</script>
```
在父组件中接收并处理这个事件:
```javascript
<template>
<TreeMenuItem @submenuSelected="handleSubMenuSelection" :menu-items="rootMenuItems" />
</template>
<script>
import TreeMenuItem from './TreeMenuItem.vue';
export default {
components: { TreeMenuItem },
methods: {
handleSubMenuSelection(item) {
this.$router.push(item.route);
// 对于操作,例如保存更新,可以发送请求到API
// 操作完成后再返回当前页面或者刷新菜单
},
},
data() {
return {
rootMenuItems: ..., // 根节点菜单列表
};
},
};
</script>
```
阅读全文