vue---tree实现递归组件(多级下拉菜单)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue---tree实现递归组件(多级下拉菜单)相关的知识,希望对你有一定的参考价值。

参考技术A   <div class="detail-list">

    <div class="item" v-for="(item, index)in list" :key="index">

      <div class="item-title border-bottom" @click.stop="changeStatus(index)" :class="'active':isActive[index]">

        <span class="oks"> item.title

      <!-- 注意递归终止条件 -->

      <div v-if="item.children" class="item-children">

        <!-- 通过name进行递归调用 -->

        <detail-list v-on="$listeners"

          v-if="scopesDefault[index]"

          :list="item.children"

        >

export default

name:"DetailList",

  props:

list:Array,

  ,

  data()

return

isActive:[],

      scopesDefault: [], // 第一级

      scopes: [], // 第二级

    ;

  ,

  created()

this.scope();

  ,

  mounted()

,

  methods:

changeStatus(index)

var ods=[]

for(var b=0;b

ods.push(false)



this.scopesDefault=ods;

      this.isActive=ods;

      if (this.scopesDefault[index] ==true)

this.$set(this.scopesDefault, index, false);

      else

this.$set(this.scopesDefault, index, this.scopes[index]);

        if(this.list[index].children==undefined)

this.$emit("Eok",true)

//数据内容

          // var value = [

          //  title: "文华酒店自助晚餐",

// ]

//

// this.list[index]['children']=value

          this.$set(this.isActive, index, true);

        else

this.$set(this.isActive, index, this.scopes[index]);

       



// this.list.push(

      //  title: "特惠1票",

// )

    ,

    scope()

this.list.forEach((item, index) =>

this.scopes[index]=false

        this.isActive[index]=false

        this.scopesDefault[index] =false; // 第一级索引值全都是false

        if ("children" in item) // 判断第一级是否有children

          this.scopes[index] =true;

        else

this.scopes[index] =false;

       

);

    ,

  ,

;

<style scoped>

.item-title

line-height:40px;

  padding:0 10px;

  display:flex;

  color:#666;



.item-title span

cursor:pointer;

  display:block;

  margin:0 auto;



.item-title.active span

border-bottom:2px solid #03a9f4;

  color:#03a9f4;



.item-children

padding:0 20px;

  position:absolute;

  width:100%;

  left:0;



.item-title.active



.detail-list

width:100%;

  display:flex;

  border-bottom:1px solid #ddd;

  position:relative;



.detail-list>div

flex:1;



.item

flex:1;



</style>

以上是关于vue---tree实现递归组件(多级下拉菜单)的主要内容,如果未能解决你的问题,请参考以下文章

vue组件递归——级联菜单的实现

Excel 如何实现五级下拉菜单联动

39.React动态菜单组件实现

el-menu 菜单递归循环

多级下拉引导

Reactstrap 多级下拉祖先不关闭