<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了VUE遞迴樹形實現多級列表,供大家參考,具體內容如下
簡單來說就是在元件中內使用元件本身。
為什麼要用遞迴?
如果出現很多下拉式選單,同級,分級資料,層級混雜,可以使用v-for的巢狀迴圈不就完事了。對,沒毛病這樣的話也可以做,但是如果資料又多加了【很多】級分類呢;使用v-for也能實現,但是程式碼可能會比較雜或混亂!也不適合後期的維護,這個時候呢,我們就可以使用我們所說道的【遞迴元件 】了,使用遞迴元件,無論你的資料怎麼增加我們都不用改動我們的程式碼。
先看效果:
1、建立兩個檔案
父元件tree.vue 子元件tree-detail
父元件程式碼:
<template> <div id="tree"> <treedetail :title="list.name" //把值傳給子元件 :list="list.children" //把值傳給子元件 :num='0' > </treedetail> </div> </template> <script> /** * 模擬一個樹形結構圖 */ const list = { name: "電子產品", children: [ { name: "電視", children: [ { name: "philips", children: [ { name: "philips-A" }, { name: "philips-B" }, { name: "philips-C" } ] }, { name: "Tcl", children: [ { name: "Mac Air" }, { name: "Mac Pro" }, { name: "ThinlPad", children: [ { name: "ThinlPad-A", children: [ { name: "ThinlPad-A-a" }, { name: "ThinlPad-A-b" }, { name: "ThinlPad-A-c" } ] }, { name: "ThinlPad-B" }, { name: "ThinlPad-C" }, { name: "ThinlPad-D" } ] } ] }, { name: "海興" } ] }, { name: "電腦", children: [{ name: "acer" }, { name: "聯想" }, { name: "惠普" }] }, { name: "可穿戴的裝置", children: [ { name: "手環", children: [ { name: "華為B5手環" }, { name: "小米手環" }, { name: "iphone手環" } ] } ] } ] }; import treedetail from '../tree/treedetail' export default{ name:'tree', data(){ return{list} }, components:{treedetail} //註冊子元件 } </script>
子元件程式碼:
<template> <div id="treedetail" > <div class="treedetail" @click="btn()" :style="indent"> //btn是用來切換顯示隱藏 <span>{{flag ? '-' :'+'}}</span> <span>{{title}}</span> //接收到的標題 </div> <div v-if="flag"> //這裡加顯示隱藏也是必要的 <treedetail //treedetail這裡的命名要跟父元件註冊子元件名稱一樣,不然無法顯示。DIV就無法顯示 v-for="(item,index) in list" :key="index" :title="item.name" :list='item.children' //渲染列表下的列表資料 :num='num + 1' //這裡的作用應該是分清層級。 ></treedetail> </div> </div> </template> <script> export default { name:'treedetail', props:{ title:{ type:String, default:'名稱' }, list:{type:Array}, num:{ type:Number, default:0 } }, data(){ return{ flag:false } }, methods:{ btn(){ this.flag=!this.flag } }, computed:{ indent(){ return `transform: translate(${this.num*20}px)`; } } } </script>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45