ホームページ  >  記事  >  ウェブフロントエンド  >  vueファイルツリーコンポーネントの使い方の詳しい説明

vueファイルツリーコンポーネントの使い方の詳しい説明

亚连
亚连オリジナル
2018-05-28 11:27:592358ブラウズ

この記事では、主に vue ファイル ツリー コンポーネントの使用方法を詳しく紹介します。興味のある方は参考にしてください。

この記事の例では、vue ファイル ツリー コンポーネントの実装方法を皆さんに共有します。具体的な内容は以下の通りです

この記事は主にvue公式ウェアハウス[vue github]にあるファイルツリーコンポーネントを分析します

最初はHTMLテンプレートです:

<li>
  <p
   //文件夹加粗表示
   :class="{bold: isFolder}" 
   //处理单击事件 打开闭合文件列表            
   @click="toggle"  
   //处理双击事件 双击子文件,子文件属性变为文件夹               
   @dblclick="changeType">  
   //显示文件名      
   {{model.name}}
  //若是文件夹的话则显示[+]来控制文件夹的开关闭合
   <span v-if="isFolder">[{{open ? &#39;-&#39; : &#39;+&#39;}}]</span>
  </p>
  <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(&#39;item&#39;, {
 template: &#39;#item-template&#39;,
 props: {
 model: Object //将文件数据通过props传入
 },
 data: function () {
 return {
  open: false  //open表示文件夹闭合状态
 }
 },
 computed: {
 isFolder: function () {
  return this.model.children &&
  this.model.children.length
 }
 }, //计算对象是否有子节点并且子节点数大于0来判断是否是文件夹
 methods: {
 toggle: function () {
  if (this.isFolder) {
  this.open = !this.open
  }
 },    //控制文件夹闭合的方法 单击触发改变open
 changeType: function () {
  if (!this.isFolder) {
  Vue.set(this.model, &#39;children&#39;, [])
  this.addChild()
  this.open = true
  }
 }, //双击触发,通过给文件增加子节点来使文件属性变成文件夹
 addChild: function () {
  this.model.children.push({
  name: &#39;new stuff&#39;
  })  //点击文件夹里的+节点触发 为文件夹添加一个新文件
 }   
 }
})

したがって、設計上のアイデアは、オブジェクトに子ノードがあるかどうかを判断して、それがフォルダーであるかファイルであるかを判断し、5083cbefc9e5095dae6431462e2af988 コンポーネントを再帰的に再利用してファイル ツリーの効果を示すことです。 。

最後は受信コンポーネントのデータ形式です:

var data = {
 name: &#39;My Tree&#39;,
 children: [
 { name: &#39;hello&#39; },
 { name: &#39;wat&#39; },
 {
  name: &#39;child folder&#39;,
  children: [
  {
   name: &#39;child folder&#39;,
   children: [
   { name: &#39;hello&#39; },
   { name: &#39;wat&#39; }
   ]
  },
  { name: &#39;hello&#39; },
  { name: &#39;wat&#39; },
  {
   name: &#39;child folder&#39;,
   children: [
   { name: &#39;hello&#39; },
   { name: &#39;wat&#39; }
   ]
  }
  ]
 }
 ]
}

上記は私がまとめたもので、将来的には皆さんのお役に立てれば幸いです。

関連記事:

ネイティブnodejsはWebSocketコード共有を使用します

応答ライトバックを介してページリソースをレンダリングするnodejsの詳細な説明

vueドロップダウンリスト関数のサンプルコード

以上がvueファイルツリーコンポーネントの使い方の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。