前言:因为现成的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. linux下递归列出目录下的所有文件名(不包括目录)

    1.linux下递归列出目录下的所有文件名(不包括目录) ls -lR |grep -v ^d|awk '{print $9}'2.linux下递归列出目录下的所有文件名(不包括目录),并且去掉空行 ...

  2. P4013 数字梯形问题 网络流二十四题

    P4013 数字梯形问题 题目描述 给定一个由 nn 行数字组成的数字梯形如下图所示. 梯形的第一行有 m 个数字.从梯形的顶部的 m 个数字开始,在每个数字处可以沿左下或右下方向移动,形成一条从梯形 ...

  3. Java中++,--,前缀后缀表达值的不同,与^的值计算

    package 习题1; /** * ++ -- 与 ^ 的一些计算 * @author SeeClanUkyo * */ public class Test4 { public static voi ...

  4. 【Android实验】 数据存储与访问sqlite

    目录 实验目的 实验要求 实验过程 功能分析: 实验结果: 实验的代码 实验总结 实验目的     分别使用sqlite3工具和Android代码的方式建立SQLite数据库.在完成建立数据库的工作后 ...

  5. UVa 12174 Shuffle(滑动窗口)

    https://vjudge.net/problem/UVA-12174 题意: 你在听音乐播放器,它采用随机播放形式.随机播放的原理时先随机产生一个1~n的排列,然后就按这个排列顺序播放歌曲.播放完 ...

  6. 翻译header

    !/usr/bin/env pyhton --coding:utf-8-- import urllib.request import urllib.parse import os,sys import ...

  7. vscode中使用EF脚手架生成数据库上下文(scaffold-dbcontext)

    目前在vscode上用netcore + ef core,在用dbfirst的方式生成模型和context上下文一直没有找到方法,之前在vs2017中,的nuget管理控制台输入命令: Scaffol ...

  8. API接口自动化之3 同一个war包中多个接口做自动化测试

    同一个war包中多个接口做自动化测试 一个接口用一个测试类,每个测试用例如下,比如下面是4个测试用例,每个详细的测试用例中含有请求入参,返回体校验,以此来判断每条测试用例是否通过 一个war包中,若含 ...

  9. STL__size_t, ptrdiff_t, size_type, difference_type

    http://blog.csdn.net/zhaowei123191/article/details/5617559 ize_t 是unsigned类型, 用于指明数组长度或下标,它必须是一个正数,s ...

  10. C#两种数据类型

    C#的两种类据类型:值类型和引用类型   什么是值类型,什么是引用类型 概念:值类型直接存储其值,而引用类型存储对其值的引用.部署:托管堆上部署了所有引用类型. 引用类型:基类为Objcet 值类型: ...