最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue文件樹組件使用詳解

 更新時間:2021年08月17日 09:27:28   作者:shayminsky  
這篇文章主要為大家詳細介紹了vue文件樹組件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了vue文件樹組件的實現(xiàn)方法,供大家參考,具體內(nèi)容如下

本文主要是分析vue官方倉庫里的文件樹組件[vue github]

demo可以查看 https://codepen.io/shayminsky21/pen/xXwxgm

首先是html模板:

<li>
  <div
   //文件夾加粗表示
   :class="{bold: isFolder}" 
   //處理單擊事件 打開閉合文件列表            
   @click="toggle"  
   //處理雙擊事件 雙擊子文件,子文件屬性變?yōu)槲募A               
   @dblclick="changeType">  
   //顯示文件名      
   {{model.name}}
  //若是文件夾的話則顯示[+]來控制文件夾的開關(guān)閉合
   <span v-if="isFolder">[{{open ? '-' : '+'}}]</span>
  </div>
  <ul v-show="open" v-if="isFolder">
  //利用v-for顯示子文件列表,通過遞歸使用item組件來完成文件樹
   <item
   class="item"
   v-for="model in model.children"
   :model="model">
   </item>
   //增加一個+標記,單擊可以增加子文件
   <li class="add" @click="addChild">+</li>
  </ul>
</li>

接下來是組件部分的源碼:

Vue.component('item', {
 template: '#item-template',
 props: {
 model: Object //將文件數(shù)據(jù)通過props傳入
 },
 data: function () {
 return {
  open: false  //open表示文件夾閉合狀態(tài)
 }
 },
 computed: {
 isFolder: function () {
  return this.model.children &&
  this.model.children.length
 }
 }, //計算對象是否有子節(jié)點并且子節(jié)點數(shù)大于0來判斷是否是文件夾
 methods: {
 toggle: function () {
  if (this.isFolder) {
  this.open = !this.open
  }
 },    //控制文件夾閉合的方法 單擊觸發(fā)改變open
 changeType: function () {
  if (!this.isFolder) {
  Vue.set(this.model, 'children', [])
  this.addChild()
  this.open = true
  }
 }, //雙擊觸發(fā),通過給文件增加子節(jié)點來使文件屬性變成文件夾
 addChild: function () {
  this.model.children.push({
  name: 'new stuff'
  })  //點擊文件夾里的+節(jié)點觸發(fā) 為文件夾添加一個新文件
 }   
 }
})

所以設(shè)計思路就是通過判斷對象是否有子節(jié)點來決定是文件夾還是文件,然后通過遞歸復用<item>組件來展示文件樹的效果。

最后是傳入組件的數(shù)據(jù)格式:

var data = {
 name: 'My Tree',
 children: [
 { name: 'hello' },
 { name: 'wat' },
 {
  name: 'child folder',
  children: [
  {
   name: 'child folder',
   children: [
   { name: 'hello' },
   { name: 'wat' }
   ]
  },
  { name: 'hello' },
  { name: 'wat' },
  {
   name: 'child folder',
   children: [
   { name: 'hello' },
   { name: 'wat' }
   ]
  }
  ]
 }
 ]
}

大家可以根據(jù)這個基本的結(jié)構(gòu)繼續(xù)拓展文件樹的功能和展示效果。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

务川| 高邑县| 安徽省| 五河县| 门源| 丰都县| 靖江市| 东乡| 弥渡县| 宜川县| 太和县| 兴和县| 阳西县| 贵阳市| 海林市| 广元市| 莆田市| 华阴市| 阜阳市| 松潘县| 六枝特区| 思南县| 兰西县| 五莲县| 禄劝| 姜堰市| 枞阳县| 方城县| 通许县| 台前县| 内黄县| 诸暨市| 泰州市| 平邑县| 崇仁县| 龙岩市| 永泰县| 汪清县| 新民市| 乌审旗| 阿尔山市|