vue单个组件实现无限层级多选菜单

该博客介绍了一个使用Vue构建的单个组件,该组件能够实现无限层级的多选菜单。通过组件通信和Vuex store管理状态,实现从底层菜单到顶层菜单的状态同步。在初始化时,从底层向上层传递状态,而状态改变则更新checkList数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

wTree.vue

原理:每一个多选框都是一个节点,每个节点就是一个wTree组件,有父级(顶级level为0),有子级(底层list[]是空的),组件之间状态传递是通过组件通信传递,对于外部数据checkList数组的修改是通过store实现的。初始化从底层状态传递到上层,一层一层传递。改变状态,不同状态改变,修改checklist数组。大概就这个思路,下面是代码:

<template>
  <div>
    <div >
      <span v-for="o in levelNum"> </span>
      <i v-if="item.list" :class="open ? openClass : closeClass" @click="showSub" style="color: #00d6b2"></i>
      <span v-else>   </span>
      <span>
        <a @click="changeState">
          <img src="./../assets/selectedAll.png" v-if="selectedState === 'all'" width="15px" height="15px"/>
          <img src="./../assets/selectedSub.png" v-if="selectedState === 'sub'" width="15px" height="15px"/>
          <img src="./../assets/selectedNull.png" v-if="selectedState === 'null'"  width="15px" height="15px"/>
        </a>
      </span>
      <span>{
   {item.name}}</span>
    </div>
    <component v-show="open" :is="node" :item="o" :state="stateSub" v-for="o of item.list" :key="o.key" :level="levelNum" v-on:changeToPar="changeBySub">
    </component>
  </div>
</template>
<script>
  export default {
    name: 'wTree',
    props: ['item', 'level', 'state'],
    data () {
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值