ivew数控件Tree自定义节点内容示例分析

demo地址:https://run.iviewui.com/plcWlM4H

  1. <template>
  2. <Tree :data="data5" :render="renderContent"></Tree>
  3. </template>
  4. <script>
  5. export default {
  6. data () {
  7.  
  8. return {
  9. data5: [
  10. {
  11. title: 'parent 1',
  12. expand: true,
  13. children: [
  14. {
  15. title: 'child 1-1',
  16. expand: true,
  17. children: [
  18. {
  19. title: 'leaf 1-1-1',
  20. expand: true
  21. },
  22. {
  23. title: 'leaf 1-1-2',
  24. expand: true
  25. }
  26. ]
  27. },
  28. {
  29. title: 'child 1-2',
  30. expand: true,
  31. children: [
  32. {
  33. title: 'leaf 1-2-1',
  34. expand: true
  35. },
  36. {
  37. title: 'leaf 1-2-1',
  38. expand: true
  39. }
  40. ]
  41. }
  42. ]
  43. }
  44. ],
  45. buttonProps: {
  46. type: 'default',
  47. size: 'small',
  48. }
  49. }
  50. },
  51.  
  52. //<Icon type="ios-create-outline" />
  53.  
  54. methods: {
  55. renderContent (h, { root, node, data }) {
  56. //console.log(root, '树的根节点', node, '当前节点', data, '当前节点数据');
  57. /*
  58.  
  59. @root <Array> 把整个树 扁平化 后的 数组
  60. @node <Object> 当前节点
  61. @date <Object> 当前节点数据
  62.  
  63. nodeKey 每个节点 的唯一标识
  64. parent 父级的 nodeKey
  65.  
  66. */
  67. return h('span', {
  68. class: 'span1',
  69. style: {
  70. display: 'inline-block',
  71. width: '100%'
  72. },
  73. }, [
  74. h('span', [
  75. h('Icon', {
  76. props: {
  77. type: 'ios-paper-outline'
  78. },
  79. class: 'wenjiantubiao',
  80. style: {
  81. marginRight: '8px'
  82. }
  83. }),
  84. h('span', data.title) // 节点标题
  85. ]),
  86. h('span', { //右侧操作 包裹
  87. class: 'youcecaozuo',
  88. style: {
  89. display: 'inline-block',
  90. float: 'right',
  91. marginRight: '32px'
  92. }
  93. }, [
  94. h('Button', { //添加按钮
  95. props: Object.assign({}, this.buttonProps, {
  96. icon: 'ios-add'
  97. }),
  98. style: {
  99. marginRight: '8px'
  100. },
  101. on: {
  102. click: () => { this.append(data) }
  103. }
  104. }),
  105. h('Button', { //删除按钮
  106. props: Object.assign({}, this.buttonProps, {
  107. icon: 'ios-remove'
  108. }),
  109. on: {
  110. click: () => { this.remove(root, node, data) }
  111. }
  112. })
  113. ])
  114. ]);
  115. },
  116. append (data) {
  117. const children = data.children || [];
  118. children.push({
  119. title: 'appended node',
  120. expand: true
  121. });
  122. this.$set(data, 'children', children);
  123. },
  124. remove (root, node, data) {
  125. //console.log(root, node, data, '三个东西');
  126. console.log(node, '确定的node节点');
  127. /*
  128. 因为 参数node 是从 root 上引用 处理的 所以 find 时 可以 判断 el对象 和 node 对象是否相等,
  129. 详见:https://www.cnblogs.com/taohuaya/p/11535432.html
  130. */
  131. const parentKey = root.find(el => {
  132. console.log(el, 'root每项');
  133. return el === node;
  134. }).parent; //找到删除项的 父级标识
  135.  
  136. const parent = root.find(el => el.nodeKey === parentKey).node; //通过 删除的 父级标识 找到 父级元素
  137. const index = parent.children.indexOf(data); //在父级的children数组 中 找到当前删除元素 的索引 index
  138. parent.children.splice(index, 1); //在父级children中 删除掉 要删除的元素
  139. }
  140. }
  141. }
  142.  
  143. /*
  144. render: (h, { root, node, data }) => {
  145. return h('span', {
  146. style: {
  147. display: 'inline-block',
  148. width: '100%'
  149. }
  150. }, [
  151. h('span', [
  152. h('Icon', {
  153. props: {
  154. type: 'ios-folder-outline'
  155. },
  156. style: {
  157. marginRight: '8px'
  158. }
  159. }),
  160. h('span', data.title)
  161. ]),
  162. h('span', {
  163. style: {
  164. display: 'inline-block',
  165. float: 'right',
  166. marginRight: '32px'
  167. }
  168. }, [
  169. h('Button', {
  170. props: Object.assign({}, this.buttonProps, {
  171. icon: 'ios-add',
  172. type: 'primary'
  173. }),
  174. style: {
  175. width: '64px'
  176. },
  177. on: {
  178. click: () => { this.append(data) }
  179. }
  180. })
  181. ])
  182. ]);
  183. },
  184.  
  185. */
  186.  
  187. </script>

视图:

ivew数控件Tree自定义节点内容示例分析的更多相关文章

  1. vue中element-ui树形控件自定义节点,注意一下

    在项目中用到菜单项编辑删除,在 element-ui自定义节点内容时, 有说明:使用render-content指定渲染函数, 得环境支持 JSX 语法,只要正确地配置了相关依赖,就可以正常运行. 一 ...

  2. 验证实现element-ui树形控件的自定义图标及右键菜单

    许久不用,element-ui已经更新至2.4.1版本.直接进入今天的正题,前提是node.js的环境还有vue及elment-ui都已经安装.由于element-ui的官方文档中介绍比较粗略,试了许 ...

  3. Element ui tree树形控件获取当前节点id和父节点id

    低版本Element ui tree树形控件获取当前节点id和父节点id的方法:点击查看 最新版本Element ui tree树形控件获取当前节点id和父节点id教程: 1.找到node_modul ...

  4. element-ui tree控件获取当前节点和父节点

    今天使用element-ui 遇到两个问题,第一个问题是获取tree控件的当前节点和父节点, 一开始使用tree控件的getCurrentNode()函数,结果发现返回的是当前节点的data属性,和u ...

  5. 实用的树形菜单控件tree

     jQuery plugin: Treeview  这个插件能够把无序列表转换成可展开与收缩的Tree. jQuery plugin: Treeview  jQuery  jstree  jsTree ...

  6. VS2010/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)

    前面一节讲了树形控件Tree Control的简介.通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件的创建.CTreeCtrl类的主要成员函数和应用实例. 树形控件的创建 MFC为树形控件提 ...

  7. Merkle 树——空间换时间,分而治之的hash表,通过根节点是由它的两个子节点内容的哈希值组成来校验数据完整性,定位篡改的数据位置

    Merkle 树 图 1.5.6.1 - Merkle 树示例 默克尔树(又叫哈希树)是一种二叉树,由一个根节点.一组中间节点和一组叶节点组成.最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的 ...

  8. VS2010-MFC(常用控件:树形控件Tree Control 下)

    转自:http://www.jizhuomi.com/software/203.html 前面一节讲了树形控件Tree Control的简介.通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件 ...

  9. WebConfig 自定义节点configSections配置信息

    WebConfig 自定义节点configSections配置信息 示例: <configuration>   <configSections>     <!-- For ...

随机推荐

  1. Docs-.NET-C#-指南-语言参考-关键字-值类型:bool

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:bool 1.返回顶部 1. bool(C# 参考) 2015/07/20 bool 关键字是 System.Boolean  ...

  2. React错误收集

    1.  Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/ ...

  3. k8s记录-etcd集群部署(三)

    https://blog.csdn.net/fy_long/article/details/86542872 1)程序准备tar xvf etcd-v3.3.11-linux-amd64.tar.gz ...

  4. SQL查询优化 LEFT JOIN和INNER JOIN

    作者:VerySky 推荐:陈敬(Cathy) SQL查询优化 LEFT JOIN和INNER JOIN 1,连接了八个数据库表,而且全部使用LEFT JOIN,如下所示: Resource_Reso ...

  5. 报错:java.lang.ClassNotFoundException: org.codehaus.jackson.map.JsonMappingException

    报错背景: 执行hdfs-mysql的job任务的时候报错. 报错现象: Exception has occurred during processing command Exception: org ...

  6. Vue学习笔记十:过滤器

    目录 公共过滤器的写法 简易过滤器+带参数过滤器+多过滤器 私有过滤器 公共过滤器的写法 过滤器的写法还是很简单的 ,如下 <p>{{ msg | filtermsg }}</p&g ...

  7. text-align:justify 两端对齐

    今天看页面发现一个以前没用过的css属性text-align:justify,查了一下非常实用,是一个实现文本两端对齐的属性. 使用前: 使用后: 看了一些文章还有结合inline-block+tex ...

  8. ELK之Kibana的可视化监控报警插件sentinl的配置

    参考:https://www.bbsmax.com/A/gGdXbgXmJ4/ https://www.deathearth.com/333.html  https://www.cnblogs.com ...

  9. Java基础教程:多线程杂谈——双重检查锁与Volatile

    Java基础教程:多线程杂谈——双重检查锁与Volatile 双重检查锁 有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化.此时程序员可能会采用延迟初始化.但要正确实 ...

  10. cudaGetDevice() failed. Status: cudaGetErrorString symbol not found.怎么解决

    我是在使用anaconda的Spyder写一个数字识别的任务的时候遇到这个问题的,当时我以为是我的函数库有问题,然后安装了很多东西都没用,然后百度的答案都很模糊,在我尝试了一天一下午之后,找到了问题原 ...