vue实现树形菜单,vue漂亮的树控件

  vue实现树形菜单,vue漂亮的树控件

  本文主要详细介绍Vue自定义树控件的使用方法。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  在本文中,我们分享了Vue自定义树控件的使用方法,供大家参考。具体情况如下

  效果图:

  数据结构:

  树:{

  标题: ,//标题(名称)

  密钥:“0”,

  头像: ,//头像

  SelectStatus: false,//复选框被选中。

  儿童:[

  {

  标题:“旺旺一个”,

  关键:“0-0”,

  头像: ,

  selectStatus: false,

  儿童:[

  {

  关键:“0-0-0”,

  标题:旺仔1 ,

  头:require(@/assets/wan.jpg ),

  selectStatus: false

  }

  ]

  },

  {

  标题:旺旺2号,

  密钥:“0-1”,

  头像: ,

  selectStatus: false,

  儿童:[

  {

  标题:旺旺二队一队,

  密钥:“0-1-0”,

  头像: ,

  selectStatus: false,

  儿童:[

  {

  题目:“一班,二队,旺旺”,

  密钥:“0-1-0-2”,

  头像: ,

  selectStatus: false,

  儿童:[

  {

  题目:《旺仔3》,

  密钥:“0-1-0-2-0”,

  头:require(@/assets/wan.jpg ),

  selectStatus: false

  }

  ]

  }

  ]

  }

  ]

  }

  ]

  },

  想法:

  /*自定义树控件的核心是“组件调用自身”。这里,树控件被封装到一个子组件*/

  模板

  差异

  div class=树-自定义

  div:style= indent @ click= toggle children //toggle children事件是“展开内容”和“关闭内容”的控件事件

  /*

  下面是递归数据显示的具体内容。

  比如这个项目递归的具体内容是来自效果图的“图片/头像”、“标题/名称”、“空/复选框”。

  渲染显示的逻辑是:

  div v-if=!标题标签

  //如果没有头像图片有标题,则显示“箭头标题”样式

  /div

  div v-if=headImg

  //如果有头像图片,则显示“头像-姓名-复选框”样式。

  /div

  */

  /div

  树-自定义//“呼叫自己”

  :key= children . key //key/键值是唯一的

  v-for= treeData中的孩子

  V-if=showChildren //确定是否根据toggleChildren事件展开内容。

  :treeData=children.children //下面是一些属性,应该能看懂!不要再说了!

  :label=children.title

  :headImg=children.head

  :pkid=children.key

  :depth=depth 1 //这是用于控制每行缩进的样式。你可以移动到下面的=indent()查看它的具体用法。

  :select status= children . select status

  V-bind=$attrs //这两个用来实现孙辈和孙辈之间的通信。

  v-on=$listeners

  /tree-自定义

  /div

  /div

  /模板

  脚本

  导出默认值{

  Name: TreeCustom ,//给我们的组件命名!不然怎么叫?

  data () {

  返回{

  ShowChildren: true,//这是控制是否显示内容的数据~也就是展开和折叠!

  CurrentInfoData: {} //这样做的目的是获取当前行的数据。为简洁起见,上面代码的具体用法被我删了~意思不大。

  }

  },

  //对象的默认值应该由工厂函数返回,以避免挖坑。

  道具:{

  treeData: {

  类型:数组,

  默认值:()=[]

  },

  标签:{

  类型:字符串,

  默认值:()=

  },

  深度:{

  类型:数量,

  默认值:()=0

  },

  标题:{

  类型:字符串,

  默认值:()=

  },

  PKI id:{

  类型:字符串,

  默认值:()=

  },

  选择状态:{

  类型:布尔型,

  默认值:()=null

  }

  },

  计算值:{

  indent () { //定义不同层级的缩进样式

  return { transform:` translate($ {(this。深度-1)* 15 }像素)`}

  }

  },

  方法:{

  toggleChildren () {

  this.showChildren=!这个。显示儿童

  },

  复选框选择更改(e) {

  检查的常量=e .目标.已检查

  如果(选中){

  //使用$听众方法调用祖辈的函数,因为这边是递归组件所以组件之间可能并不是严格的父子关系,所以$emit 、$parent等方法都是不合适的

  这个$听众。addselecteddata(this。currentinfodata)

  }

  如果(!已检查){

  这个$听众。deleteselecteddata(this。currentinfodata)

  }

  },

  getCurrentInfo (label,headImg,pkid) {

  this.currentInfoData={

  密钥:pkid,

  标题:标签,

  头部:头部

  }

  }

  }

  }

  /脚本

  /*组件调用方法*/

  div class=树滚动

  树-习俗

  :label=tree.title

  :headImg=tree.head

  :treeData=tree.children

  :pkid=tree.key

  :深度="0"

  :选择状态=树。选择状态

  @ addSelectedData= addSelectedData

  @ deleteSelectedData= deleteSelectedData /

  /div

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

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

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