欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue文件樹組件使用詳解

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

本文實例為大家分享了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>
   //增加一個+標(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
 }
 }, //計算對象是否有子節(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é)點來決定是文件夾還是文件,然后通過遞歸復(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ù)這個基本的結(jié)構(gòu)繼續(xù)拓展文件樹的功能和展示效果。

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

相關(guān)文章

  • vue+axios+promise實際開發(fā)用法詳解

    vue+axios+promise實際開發(fā)用法詳解

    這篇文章主要介紹了vue+axios+promise實際開發(fā)用法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • vue實現(xiàn)移動端適方案的完整步驟

    vue實現(xiàn)移動端適方案的完整步驟

    現(xiàn)在的手機五花八門,造就了移動端窗口分辨率繁多的局面,在不同分辨率的屏幕下保持與UI圖一致的效果,就成了讓前端不得不頭疼的問題,下面這篇文章主要給大家介紹了vue實現(xiàn)移動端適方案的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 簡單理解Vue中的nextTick方法

    簡單理解Vue中的nextTick方法

    本篇文章主要介紹了簡單理解Vue中的nextTick方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • VUE3函數(shù)的聲明和使用舉例

    VUE3函數(shù)的聲明和使用舉例

    這篇文章主要給大家介紹了關(guān)于VUE3函數(shù)的聲明和使用的相關(guān)資料, Vue3是一種流行的JavaScript框架,它允許開發(fā)人員構(gòu)建現(xiàn)代化的Web應(yīng)用程序,需要的朋友可以參考下
    2023-07-07
  • vue使用urlEncode問題

    vue使用urlEncode問題

    這篇文章主要介紹了vue使用urlEncode問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue自定義氣泡彈窗

    vue自定義氣泡彈窗

    這篇文章主要為大家詳細(xì)介紹了vue自定義氣泡彈窗,包含css晃動動畫shake制作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • vue打包后生成一個配置文件可以修改IP

    vue打包后生成一個配置文件可以修改IP

    本文主要介紹了修改Vue項目運行的IP和端口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Vue動態(tài)面包屑功能的實現(xiàn)方法

    Vue動態(tài)面包屑功能的實現(xiàn)方法

    面包屑功能是我們在項目中經(jīng)常遇到的功能,今天小編使用Element-UI 進行實現(xiàn)在vue項目中實現(xiàn)面包屑功能,具體實現(xiàn)方式大家跟隨小編一起學(xué)習(xí)吧
    2019-07-07
  • Vue組件設(shè)計-Sticky布局效果示例

    Vue組件設(shè)計-Sticky布局效果示例

    這篇文章主要介紹了Vue組件設(shè)計-Sticky布局,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • vue子組件獲取到它父組件數(shù)據(jù)的4種方法

    vue子組件獲取到它父組件數(shù)據(jù)的4種方法

    這篇文章主要給大家介紹了關(guān)于vue子組件獲取到它父組件數(shù)據(jù)的4種方法,對于vue來說組件之間的消息傳遞是非常重要的,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08

最新評論