uniapp如何根据这样的数据结构封装一个树形控件?

data:{

depts:[
    {    
        depts:[
            {    
                depts:[]
                users:[]
            }
        ]
        users:[]
    },
    {    
        depts:[
            {
                depts:[]
                users:[]
            }
        ]
        users:[]
    }
]
users:[]

}

阅读 1.7k
1 个回答

<template>
  <view class="dept">
    <view class="dept-name">{{ dept.name }}</view>
    <view class="users">
      <view class="user" v-for="user in dept.users" :key="user.id">
        {{ user.name }}
      </view>
    </view>
    <view class="sub-depts">
      <dept v-for="subDept in dept.depts" :key="subDept.id" :dept="subDept" />
    </view>
  </view>
</template>
<script>
export default {
  name: 'dept',
  props: {
    dept: Object
  },
  components: {
    'dept': () => import('./Dept.vue')  // 递归引用自身
  }
}
</script>

然后:

<template>
  <view class="tree">
    <dept v-for="dept in data.depts" :key="dept.id" :dept="dept" />
  </view>
</template>

<script>
import Dept from './Dept.vue'

export default {
  components: {
    Dept
  },
  data() {
    return {
      data: {
        depts: [
          // 你的数据
        ]
      }
    }
  }
}
</script>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题