1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      小編給大家分享一下Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

      為永德等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及永德網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、永德網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

      利用簡單的樹形視圖實(shí)現(xiàn),熟悉了組件的遞歸使用

      這是模擬的樹形圖數(shù)據(jù)

      let all={ 
        name:'all', 
        children:{ 
         A:{ 
          name:'A', 
          children:{ 
           a1:{ 
            name:'a1', 
            children:{ 
             a11:{  
              name:'a11', 
              children:null 
             }, 
             a12:{  
              name:'a12', 
              children:null 
             } 
            } 
           }, 
           a2:{ 
            name:'a2', 
            children:{ 
             b21:{  
              name:'b21', 
              children:null 
             } 
            } 
           } 
          } 
         }, 
         B:{ 
          name:'B', 
          children:{ 
           b1:{ 
            name:'b1', 
            children:{ 
             b11:{  
              name:'b11', 
              children:null 
             }, 
             b12:{  
              name:'b12', 
              children:null 
             } 
            } 
           }, 
           b2:{ 
            name:'b2', 
            children:{ 
             b21:{  
              name:'b21', 
              children:null 
             } 
            } 
           } 
          } 
         } 
        } 
       }

      代碼如下

      treelist.vue

       
       
       
      

      index.html

       
       
       
        
        
        
       樹形圖 
       
       
        
         
         
       
         

      index.js

      import Vue from 'vue'; 
      import tree from '../components/treelist.vue' 
      let all={ 
        name:'all', 
        children:{ 
         A:{ 
          name:'A', 
          children:{ 
           a1:{ 
            name:'a1', 
            children:{ 
             a11:{  
              name:'a11', 
              children:null 
             }, 
             a12:{  
              name:'a12', 
              children:null 
             } 
            } 
           }, 
           a2:{ 
            name:'a2', 
            children:{ 
             b21:{  
              name:'b21', 
              children:null 
             } 
            } 
           } 
          } 
         }, 
         B:{ 
          name:'B', 
          children:{ 
           b1:{ 
            name:'b1', 
            children:{ 
             b11:{  
              name:'b11', 
              children:null 
             }, 
             b12:{  
              name:'b12', 
              children:null 
             } 
            } 
           }, 
           b2:{ 
            name:'b2', 
            children:{ 
             b21:{  
              name:'b21', 
              children:null 
             } 
            } 
           } 
          } 
         } 
        } 
       } 
      const app=new Vue({ 
       el:"#app", 
       components:{ 
        'tree':tree 
       }, 
       data:{ 
        treeList:all 
       } 
      })

      在經(jīng)過踩坑之后,我發(fā)現(xiàn)Vue官網(wǎng)有類似的案例,鏈接→ 傳送門

      參考過官網(wǎng)的方法后,我嘗試著實(shí)現(xiàn)了一下

      這樣寫和我踩坑時(shí)的 思路不同點(diǎn)在于, 這樣一個(gè)組件只負(fù)責(zé)一個(gè) 對象,遍歷每個(gè)children 中的對象,逐個(gè)傳入組件處理,而我第一次嘗試則是 將整個(gè)children  傳入自身   是一個(gè)組件處理多個(gè)對象,(第一次嘗試的失敗案例,有興趣請看最下方)

      這樣一個(gè)組件處理一個(gè)對象 寫的好處是什么呢

      我可以在組件內(nèi)自定義開關(guān)了

      我在data里定義了變量open,因?yàn)榻M件遞歸,所以相當(dāng)于每個(gè)組件都有個(gè)屬于自己的open

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      那為什么第一次踩坑時(shí)我不可以用這種方法呢,因?yàn)槲业谝淮螄L試 是一個(gè)組件處理多個(gè)對象 就是相當(dāng)于 一個(gè)開關(guān)控制 children中的所有對象,當(dāng)開關(guān)打開時(shí)會(huì)導(dǎo)致 這個(gè)同級的所有 對象都被展開

      遍歷children 挨個(gè)傳入組件自身    用v-show 來控制是否顯示 

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      定義了一個(gè)計(jì)算屬性,依據(jù)children來判斷是否繼續(xù)執(zhí)行 

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      在span標(biāo)簽上綁定了一個(gè)自定義事件

      更改open 的值 

      {{treelist.name}}

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      實(shí)現(xiàn)效果

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      以下 是我剛開始嘗試的時(shí)候踩得坑

      在這里記錄一下,以后遇到類似問題留個(gè)印象

      首先上來就遇到了這樣的報(bào)錯(cuò)

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      找了很久的問題,發(fā)現(xiàn)是因?yàn)榻M件內(nèi)忘記寫name了,自身使用自身必須填寫name,并且與標(biāo)簽名一致

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      一開始的實(shí)現(xiàn)方法,利用組件遞歸,顯示出當(dāng)前級的name渲染出來,并將其中的 children 中的所有對象 傳給自己然后接著執(zhí)行相同操作,直到children沒有數(shù)據(jù),值得一提的是

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      ,如果這里不加上 v-if 就會(huì)變成 死循環(huán),就會(huì)一直執(zhí)行下去,所以我們要判斷一下當(dāng)前執(zhí)行的對象到底還有沒有下一級

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      這里我數(shù)據(jù)有稍微的改動(dòng),所以我第一次傳入的數(shù)據(jù)就是(index.html頁面)

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      然后我定義了一個(gè)事件來處理 每一層的關(guān)閉和開啟,我用彈框來查看Isopen 的值是否被改變

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      我們看一下結(jié)果

      剛進(jìn)入頁面時(shí),括號中的undefined是 Isopen 當(dāng)前的值,因?yàn)榇藭r(shí)未被定義,所以為undefined

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      然后我點(diǎn)擊了A

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      因?yàn)榇藭r(shí)isopen已被反轉(zhuǎn)值,所以此時(shí)isopen為true

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      但是頁面仍毫無變化,不說展開功能,就連undefined也沒變化

      Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能

      經(jīng)過一番百度 ,發(fā)現(xiàn)原來是vue本身已經(jīng)不允許這樣直接更改 Props接受過來的值了

      vue是什么

      Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式JavaScript框架,Vue與其它大型框架的區(qū)別是,使用Vue可以自底向上逐層應(yīng)用,其核心庫只關(guān)注視圖層,方便與第三方庫和項(xiàng)目整合,且使用Vue可以采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫開發(fā)復(fù)雜的單頁應(yīng)用。

      以上是“Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


      標(biāo)題名稱:Vue如何實(shí)現(xiàn)樹形視圖數(shù)據(jù)功能
      瀏覽路徑:http://ef60e0e.cn/article/gedpci.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        敦煌市| 抚顺市| 上栗县| 嘉定区| 青冈县| 开江县| 四平市| 日土县| 天镇县| 莒南县| 栾川县| 广安市| 平昌县| 巫山县| 达日县| 胶州市| 抚远县| 冕宁县| 庄河市| 龙胜| 郴州市| 兴安盟| 师宗县| 衢州市| 会宁县| 太仆寺旗| 玛多县| 天柱县| 安福县| 翼城县| 彰化县| 类乌齐县| 辽中县| 黑龙江省| 伊金霍洛旗| 龙陵县| 页游| 望江县| 凌云县| 麟游县| 吉木乃县|