VUE之动态路由多级菜单的实现(iview框架)

菜单组件: 文件一sidebar.vue

<template>
  <div class="sidebar">
      <Menu theme="dark"  accordion >
       <Menutree :routes='menuRouter'></Menutree>
     </Menu>
  </div>
</template>
<script>
import Menutree from './Menutree';
export default {
  name: 'dpsidebar',
  components: { Menutree },
  computed: {
    menuRouter(){
      return this.$store.getters.dpmenus
    }
  },
}

文件一Menutree.vue

<template>
  <div>
        <div v-for="item in routes" :key="item.path">
        <Submenu :name="item.name" v-if="item.children&&item.children.length>0" >
          <template slot="title">
                        {{item.name}}
          </template>
        <menuTree  :routes="item.children"></menuTree>
      </Submenu>
      <MenuItem :name="item.name" v-if="!item.hidden&&!item.children">{{item.name}}</MenuItem>
    </div>
    </div>
</template>

<script>
export default {
  name: "menuTree",
  props: {
    routes: {
      type: Array
    }
  },
  methods: {
    handleClick(e) {
      e.preventDefault();
      e.target.parentElement.classList.toggle("open");
    },
    addActive(e) {
      e.preventDefault();
      e.target.parentElement.parentElement.parentElement.classList.add("open");
      this.$store.commit('SET_TABLIST', this.$route)
    }
  }
};
</script>

<style rel="stylesheet/scss" lang="scss" scoped>
.wscn-icon {
  margin-right: 10px;
}
.hideSidebar .menu-indent {
  display: block;
  text-indent: 10px;
}
.col-input {
  width: 150px;
  border-radius: 20px;
  margin: 3px;
  margin-left: 20px;
  position: relative;
}
.lis {
  list-style: none;
}

.refresh {
  position: absolute;
  top: 5px;
  left: -13px;
  font-size: 26px;
}
.router {
  transform: rotate(720deg);
  transition-duration: 3s;
}
.color {
  font-weight: 400;
  background-color: #3B5991 !important;
  color: #F8B500 !important;
}
/deep/ .ivu-input-wrapper-small .ivu-input-icon {
    width: 24px;
    font-size: 18px;
    height: 24px;
    line-height: 24px;
    transform: translateY(2.5px);
  }
</style>

原理组件自己循环调用自己

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值