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

vue文件樹組件使用詳解

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

本文實(shí)例為大家分享了vue文件樹組件的實(shí)現(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>
   //增加一個(gè)+標(biāo)記,單擊可以增加子文件
   <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
 }
 }, //計(jì)算對象是否有子節(jié)點(diǎn)并且子節(jié)點(diǎn)數(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é)點(diǎn)來使文件屬性變成文件夾
 addChild: function () {
  this.model.children.push({
  name: 'new stuff'
  })  //點(diǎn)擊文件夾里的+節(jié)點(diǎn)觸發(fā) 為文件夾添加一個(gè)新文件
 }   
 }
})

所以設(shè)計(jì)思路就是通過判斷對象是否有子節(jié)點(diǎn)來決定是文件夾還是文件,然后通過遞歸復(fù)用<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ù)這個(gè)基本的結(jié)構(gòu)繼續(xù)拓展文件樹的功能和展示效果。

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

相關(guān)文章

最新評論

积石山| 望都县| 永安市| 漳平市| 开远市| 永康市| 黄陵县| 化州市| 凤山市| 周宁县| 高要市| 精河县| 天气| 永善县| 襄汾县| 连城县| 安远县| 玉门市| 扶余县| 珲春市| 苏尼特左旗| 若尔盖县| 阿拉善左旗| 普兰店市| 都匀市| 洱源县| 伊川县| 桂阳县| 芜湖市| 徐水县| 保定市| 彰化市| 汉寿县| 万安县| 五家渠市| 黄梅县| 福州市| 体育| 南和县| 临湘市| 行唐县|