前言:因为现成的tree组件没有找到。亦或是其依赖的其他东西太多,不太合适引入我们的项目,所以自己做了一个。大概样式:

在线例子:

https://hamupp.github.io/t-vue-tree/examples/dist/#/basicDemoAndApi

属性:

1.data {类型Object} 树的全部数据,格式参考下例,其中的各个字段的说明也看示例中的注释。在此基础上你当然可以追加自己的字段。

 [
{
title: 'parent 1',
expanded: true,
checkbox: true,//是否有勾选框,默认false
checked: false,//是否勾选该节点,默认false
selected: false,//是否选中该节点,默认false
custormKey: 'ccdf',
children: [
{
title: 'parent 1-1',
expanded: true,
checkbox: true,//是否有勾选框,默认false
checked: false,//是否勾选该节点,默认false
custormKey: 'ccdf',
children: [
{
title: 'leaf 1-1-1',
checkbox: true,//是否有勾选框,默认false
checked: false,//是否勾选该节点,默认false
custormKey: 'ccdf',
},
{
title: 'leaf 1-1-2',
checkbox: true,//是否有勾选框,默认false
checked: false,//是否勾选该节点,默认false
selected:true,//是否选中该节点,默认false
custormKey: 'ccdf',
}
]
},
{
title: 'parent 1-2',
expanded: true,
checkbox: true,//是否有勾选框,默认false
checked: false,//是否勾选该节点,默认false
custormKey: 'ccdf',
children: [
{
title: 'leaf 1-2-1',
checkbox: true,//是否有勾选框,默认false
checked: false,//是否勾选该节点,默认false
custormKey: 'ccdf',
children: [
{
title: 'leaf 1-2-1-1',
checkbox: true,//是否有勾选框,默认false
checked: false,//是否勾选该节点,默认false
custormKey: 'mmccf',
},
{
title: 'leaf 1-2-1-2',
checkbox: true,//是否有勾选框,默认false
checked: false,//是否勾选该节点,默认false
custormKey: 'mmccf',
},
{
title: 'leaf 1-2-1-3',
checkbox: true,//是否有勾选框,默认false
checked: false,//是否勾选该节点,默认false
custormKey: 'mmccf',
}
]
},
{
title: 'leaf 1-2-1',
checkbox: true,//是否有勾选框,默认false
checked: false,//是否勾选该节点,默认false
custormKey: 'ccdf',
}
]
}
]
},
{
title: 'parent 2',
expanded: false,
checkbox: true,//是否有勾选框,默认false
checked: true,//是否勾选该节点,默认false
children: [
{
title: 'parent 2-1',
checkbox: true,//是否有勾选框,默认false
checked: true,//是否勾选该节点,默认false
expanded: true,//是否展开该节点
selected: false,//是否选中该节点,默认false
expandOnClickNode: false,//点击节点时也展开节点,需要expand属性同时为真,默认false
children: [
{
title: 'leaf 2-1-1',
checkbox: true,//是否有勾选框,默认false
checked: true,//是否勾选该节点,默认false
},
{
title: 'leaf 2-1-2',
checkbox: true,//是否有勾选框,默认false
checked: true,//是否勾选该节点,默认false
}
]
},
{
title: 'parent 2-2',
expanded: true,
checkbox: true,//是否有勾选框,默认false
checked: true,//是否勾选该节点,默认false
children: [
{
title: 'leaf 2-2-1',
checkbox: true,//是否有勾选框,默认false
checked: true,//是否勾选该节点,默认false
},
{
title: 'leaf 2-2-1',
checkbox: true,//是否有勾选框,默认false
checked: true,//是否勾选该节点,默认false
}
]
}
]
}
]

2.treeSelectable {类型Boolean} 树节点是否有选中效果。默认true

3.treeSelectType {类型String} 仅限两个值single|multiple。默认single。树节点的选中效果是单选还是允许多选,正常来说,树节点的选中效果都是单选,即选中一个节点时,取消之前选中的节点。但就是有些骚包反人类客户想要多选效果

**ps:**

1.treeSelectable为false时,treeSelectType无效,节点本身的selected字段无效。

2.关于勾选框的,没有通用的勾选框属性配置。如果要加勾选框,请将每个节点的内部的checkbox字段设为true,否则该节点没有勾选框

事件:

1.onToggle 折叠展开一个节点时触发。返回该节点的所有数据
2.onCheck 勾选|取消勾选一个节点时触发。返回该节点的所有数据
3.onSelect 选择|取消选中一个节点时触发。返回该节点的所有数据

方法:

1.getCheckedNodes 参数:String 仅限两个值:checked indeterminated 获取勾选的节点,实心和非实心。返回:Array,勾选的实心或者半实心的节点的集合

2.getSelectedNodes 参数:无,返回:Array,选中的节点的集合

下载安装和引入方式:

1.npm install t-vue-tree

2.引入并注册为vue的组件:

方式分2种--全局注册or局部注册

(1)全局注册:

在你的vue项目的入口js中(按照惯例,这个js一般取名为main.js或者app.js或者index.js)注册为全局的vue组件,然后在所有vue文件中都可以直接使用:

> 例如:main.js中:
<!-- 你的其他代码 --start--     -->
...
import Vue from 'vue'
...
<!-- 你的其他代码 --end-- --> <!-- 引入本tree组件 --start-- -->
import Ttree from 't-vue-tree';
Vue.component('Ttree', Ttree);
<!-- 引入本tree组件 --end-- -->
> 然后在需要使用的vue页面中:
<template>
<!-- 先为tree组件设定一个包裹元素,并设置其宽高-->
<div class='your-tree-wrapper'> <!-- 里面写tree组件-->
<Ttree
:data="treeData"
></Ttree>
</div>
</template>

其中treeData的数据参考上文‘属性’说明中的data的说明;

(2)局部注册

在需要使用tree的vue页面中单独引入并注册为一个局部的组件:

>  demo.vue

<template>
  <div class='your-tree-wrapper'>
    <Ttree
      :data="treeData"
    ></Ttree>
  </div>
</template>

<script>
import Ttree from 't-vue-tree';//引入本组件 export default {
components: {//注册本组件
Ttree
},
data(){
return{
          treeData:[。。。数据参考属性一节的data的说明。。。]
}
}
}

**注意:**
不论哪种方式引入,在vue页面中使用时,一定要把本组件放在一个你的包裹dom元素中,例如上例中的.your-tree-wrapper的div。因为本tree的宽高css是100%,所以,如果父容器没有宽高。。。。你懂得撒。。。

git地址:

https://github.com/hamuPP/t-vue-tree

NPM地址:

https://www.npmjs.com/package/t-vue-tree

做了一个vue的同步tree 的npm组件包的更多相关文章

  1. 发布自己第一个npm 组件包(基于Vue的文字跑马灯组件)

    一.前言 总结下最近工作上在移动端实现的一个跑马灯效果,最终效果如下: 印象中好像HTML标签的'marquee'的直接可以实现这个效果,不过 HTML标准中已经废弃了'marquee'标签 既然HT ...

  2. 从0开始做一个的Vue图片/ 文件选择(上传)组件[基础向]

    原文:http://blog.csdn.net/sinat_17775997/article/details/58585142 之前用Vue做了一个基础的组件 vue-img-inputer ,下面就 ...

  3. 跟我一起做一个vue的小项目(二)

    这个vue项目是紧跟着之前的项目跟我一起做一个vue的小项目(一)来的. 我继续后面的开发(写的比较粗糙,边学边记录) 下图是header头部的样式 header组件内容如下 //header.vue ...

  4. 如何写好一个vue组件,老夫的一年经验全在这了【转】 v-bind="$attrs" 和 v-on="$listeners"

    如何写好一个vue组件,老夫的一年经验全在这了 一个适用性良好的组件,一种是可配置项很多,另一种就是容易覆写,从而扩展功能 Vue 组件的 API 来自三部分——prop.事件和插槽: prop 允许 ...

  5. 撸一个vue的双向绑定

    1.前言 说起双向绑定可能大家都会说:Vue内部通过Object.defineProperty方法属性拦截的方式,把data对象里每个数据的读写转化成getter/setter,当数据变化时通知视图更 ...

  6. 如何抽象一个 Vue 公共组件

    之前一直想写一篇关于抽象 Vue 组件的随笔,无奈一直没想到好的例子.恰巧最近为公司项目做了一个数字键盘的组件,于是就以这个为例聊聊如何抽象 Vue 的组件. 先上 Demo 与 源码.(demo最好 ...

  7. 读懂源码:一步一步实现一个 Vue

    源码阅读:究竟怎样才算是读懂了? 市面上有很多源码分析的文章,就我看到的而言,基本的套路就是梳理流程,讲一讲每个模块的功能,整篇文章有一大半都是直接挂源码.我不禁怀疑,作者真的看懂了吗?为什么我看完后 ...

  8. 创建一个vue项目的过程

    创建一个vue项目: 1.首先从UI手上拿到PSD设计图,然后看设计搞的内容,需要做个大概的页面布局 2.做vue之前不许安装node,因为做vue项目要和node结合使用 3.然后安装vue脚手架: ...

  9. 如何用vue-cli初始化一个vue项目

    单文件组件和vue-loader 解析打包.vue文件 vue为了能够使我们在项目开发中对组件进行更好的维护,提供了一个单文件组件系统,vue把每一个独立的组件放在一个.vue的文件中,在这个文件中提 ...

随机推荐

  1. 海量数据处理-BitMap算法

    一.概述 本文将讲述Bit-Map算法的相关原理,Bit-Map算法的一些利用场景,例如BitMap解决海量数据寻找重复.判断个别元素是否在海量数据当中等问题.最后说说BitMap的特点已经在各个场景 ...

  2. Educational Codeforces Round 27 A B C

    A. Chess Tourney   Berland annual chess tournament is coming! Organizers have gathered 2·n chess pla ...

  3. Nexus Repository 搭建及使用

    Nexus Repository 是搭建maven的镜像的工具之一,在全球范围内使用挺广的. 一.Nexus 搭建过程 Nexus 镜像的搭建还是相对简单的,将下载的文件解压到相应的目录下,然后进入. ...

  4. JavaScript权威指南2.词法结构

    字符集 1.用16位的Unicode字符集编写的,可以表示地球上通用的每一种书面语言.国际化 2.每个字符都是用两个字节表示的 3.大小写敏感:关键字.变量.函数名.标识符:HTML并不区分大小写 H ...

  5. 浅谈PHP5中垃圾回收算法

    原文链接:http://www.cnblogs.com/leoo2sk/archive/2011/02/27/php-gc.html PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源 ...

  6. ubuntu16.04 kinetic 安装 robot-pose-publisher

    sudo apt-get install ros-kinetic-robot-pose-publisher

  7. Git工作区、暂存区和版本库

    基本概念 我们先来理解下Git 工作区.暂存区和版本库概念 工作区:就是你在电脑里能看到的目录. 暂存区:英文叫stage, 或index.一般存放在 ".git目录下" 下的in ...

  8. [don't have permission to access]的一个经典原因

    那就是 ..... SELinux ...... 几年前好像经历过这个恶梦.现在又经历了一回. 从Windows上传了一个目录,做一个apache的别名Alias, 结果总是没有权限. chmod 7 ...

  9. 20170714xlVba多个工作簿转多个Word文档表格

    Public Sub SameFolderGather() Application.ScreenUpdating = False Application.DisplayAlerts = False A ...

  10. 《图解Http》 10,11章:构建Web的技术, Web的攻击技术

    10.2动态HTML 通过调用客户端脚本语言js,实现对web页面的动态改造.利用DOM文档对象模型,指定想发生变化的元素. 10.22 更容易控制的DOM 使用DOM可以将HTML内的元素当作对象操 ...