vue 树结构,vue树结构自定义树节点内容

  vue 树结构,vue树结构自定义树节点内容

  这篇文章主要为大家详细介绍了某视频剪辑软件实现目录树结构,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  本文实例为大家分享了某视频剪辑软件实现目录树结构的具体代码,供大家参考,具体内容如下

  

效果图

  

代码

  组件部分components/leftTree.vue

  模板

  差异

  ul class=所有列表

   li v-for=(item,i) in list :key=item.key

  !-安特的双击功能这个看个人需求,不需要的话把div class=tree-item expend/div 提取出来就可以了-

  下拉菜单:trigger=[上下文菜单]

  菜单槽=覆盖

  菜单项键=1

  打开文件

  /a-菜单项

  菜单项键=2

  新建文件

  /a-菜单项

  菜单项键=3

  保存

  /a-菜单项

  菜单项键=4

  删除

  /a-菜单项

  /a-菜单

  div class=树项目支出

  差异

  v-if= item。icon=== file item。icon=== openfile

  class=icon-size

  :class=

  openArr.includes(i)?缩减图标:扩展图标

  @click=切换一

  /div

  i v-if=item.icon===file

  img src=./assets/file.png

  //我

  i v-if=item.icon===openfile

  img src=./assets/openfile.png

  //我

  i v-if=item.icon===vue

  img src=./assets/Vue.png

  //我

  i v-if=item.icon===js

  img src=./assets/js.png

  //我

  i v-if=item.icon===react

  img src=./assets/React.png

  //我

  i v-if=item.icon===sass

  img src=./assets/Sass.png

  //我

  i v-if=item.icon===vim

  img src=./assets/vimeo.png

  //我

  i v-if=item.icon===ts

  img src=./assets/ts.png

  //我

  i v-if=item.icon===php

  img src=./assets/php.png

  //我

  i v-if=item.icon===less

  img src=./assets/less.png

  //我

  i v-if=item.icon===java

  img src=./assets/java.png

  //我

  i v-if=item.icon===c

  img src=./assets/c .png

  //我

  i v-if=item.icon===减价

  img src=./assets/markdown.png

  //我

  i v-if=item.icon===py

  img src=./assets/py.png

  //我

   i v-if=item.icon===go

  img src=./assets/go.png

  //我

  span class= content @ click= change active(item,i){{

  项目。标题

  } span

  /div

  /a-下拉列表

  !-递归-

  差异

  v-show=openArr.includes(i)

  v-if= item。儿童项目。孩子。长度

  左树class= item :list= item。子树/左树

  /div

  /李

  /ul

  /div

  /模板

  脚本

  导出默认值{

  名称:"左树",

  data() {

  返回{

  openArr: [],

  checkboxIds: [],

  };

  },

  道具:{

  列表:{

  类型:数组,

  },

  },

  方法:{

  切换{

  if (this.openArr.includes(i)) {

  设指数=这个。打开arr。指数(一);

  this.openArr.splice(索引,1);

  }否则{

  这个。打开arr。推(一);

  }

  },

  变更活动(项目,i) {

  如果(!item.children) {

  if (item.icon===file) {

  这个。切换(一);

  item.icon= openfile

  } else if(项。icon=== openfile ){

  这个。切换(一);

  item.icon= file

  }否则{

  警报(最后一个文件);

  }

  }否则{

  if (item.icon===file) {

  这个。切换(一);

  item.icon= openfile

  } else if(项。icon=== openfile ){

  这个。切换(一);

  item.icon= file

  }

  }

  },

  },

  };

  /脚本

  style lang=less 范围

  我{

  行高:0;

  img {

  宽度:16px

  高度:16px

  }

  }。项目{

  左填充:4px

  }。粗体{

  字体粗细:粗体;

  }

  ul {

  行高:1.5厘米;

  列表样式类型:无;

  空白:nowrap

  位置:相对;

  }

  李{

  列表样式类型:无;

  填充:4px

  用户选择:无;

  }。树项目{

  显示器:flex

  对齐-项目:居中;

  }。花费{

  位置:相对;

  }。花费:在{

  内容:"";

  位置:绝对;

  宽度:6px

  左:9px

  top:10px;

  上边框:1px虚线# c3c5c8

  }。所有-列表:之前{

  内容:"";

  位置:绝对;

  宽度:1px

  高度:calc(100%-40px);

  左:48px

  top:20px;

  左边边框:1px虚线# c3c5c8

  }。项目。花费:在{

  内容:"";

  位置:绝对;

  宽度:6px

  左:-11px;

  top:10px;

  上边框:1px虚线# c3c5c8

  }。项目。所有-列表:之前{

  内容:"";

  位置:绝对;

  宽度:1px

  高度:calc(100%-12px);

  左:20px

  top:0;

  左边边框:1px虚线# c3c5c8

  }。项目ul {

  左填充:2em

  }。内容{

  左填充:4px

  过渡:全0.2秒线性;

  :悬停{

  背景:# C3 C5 c8;

  }

  }。间距{

  显示:内嵌-块;

  宽度:18.5像素

  身高:1em

  }。图标大小{

  显示:内嵌-块;

  宽度:16px

  高度:16px

  右边距:4px

  }。扩展图标{

  背景:url(./assets/plus . png’)无重复中心;

  背景-尺寸:封面;

  宽度:9px

  高度:9px

  }。缩小图标{

  背景:url(./assets/minus.png )无重复中心;

  背景-尺寸:封面;

  宽度:9px

  高度:9px

  }。表示“反”下拉菜单{

  宽度:180像素

  背景:# 353b44

  李{

  颜色:# fff

  填充:2px 10px

  :悬停{

  背景:rgb(13,89,175);

  }

  }

  }

  /风格

  引用区域views/home.vue

  模板

  div class=home

  树:list=line /

  /div

  /模板

  脚本

  从" @/components/leftTree.vue "导入树;

  导出默认值{

  姓名:家,

  组件:{

  树,

  },

  data() {

  返回{

  行:[

  {

  标题:"项目",

  类型:1,

  键:"1",

  图标:"文件",

  儿童:[

  {

  标题: index.vim ,

  按键:"1-1",

  类型:3,

  图标:“vim”,

  },

  ],

  },

  {

  标题:"菜单",

  类型:1,

  键:"2",

  图标:"文件",

  },

  {

  标题:"组件",

  类型:1,

  密钥:"3",

  图标:"文件",

  儿童:[

  {

  标题:"索引",

  类型:2,

  关键:"3-1",

  图标:"文件",

  儿童:[

  {

  标题: index.vue ,

  类型:3,

  按键:"3-1-1",

  图标:“vue”,

  },

  {

  标题:" index.react ",

  类型:3,

  按键:"3-1-2",

  图标:"反应",

  },

  {

  标题:“js”,

  类型:2,

  按键:"3-1-3",

  图标:"文件",

  儿童:[

  {

  标题: index.js ,

  类型:3,

  关键:"3-1-1-1-1",

  图标:“js”,

  },

  ],

  },

  {

  标题: index.sass ,

  类型:3,

  按键:"3-1-4",

  图标:“萨斯”,

  },

  {

  标题:" index.less ",

  类型:3,

  关键:"3-1-5",

  图标:"更少",

  },

  ],

  },

  {

  标题:“index.php”,

  类型:3,

  关键:“3-2”,

  图标:“php”,

  },

  ],

  },

  {

  标题:“节点模块”,

  类型:1,

  关键字:“4”,

  图标:“文件”,

  儿童:[

  {

  标题: index.java ,

  关键:“4-1”,

  类型:3,

  图标:“java”,

  },

  {

  标题: index.go ,

  关键:“4-2”,

  类型:3,

  图标:“开始”,

  },

  {

  标题: index.py ,

  关键:“4-3”,

  类型:3,

  图标:“py”,

  },

  {

  标题: index.c ,

  关键:“4-4”,

  类型:3,

  图标:“c”,

  },

  {

  标题: README.md ,

  关键: 4-5 ,

  类型:3,

  图标:“降价”,

  },

  ],

  },

  ],

  };

  },

  };

  /脚本

  Ps:我是一个前端小白,发帖只是为了做笔记,代码可能有很大的优化空间,希望能帮助到其他有需要的朋友。

  这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: