# what is v-tree?

> 基于vue树形菜单
![](https://s1.ax1x.com/2018/12/06/FlXuP1.png)

***en:A demo path: v-tree/src/components/vTreeDemo.Vue***

***zh:一个demo的路径: v-tree/src/components/vTreeDemo.Vue***

## Explain:

zh:单选、复选、复选是/否级联选择(默认级联选中)、是否展示下拉虚线、点击节点回调函数,返回true 选中并触发选中事件,false相反,  
节点选中事件,返回选中节点信息和上个选中节点信息,选中/取消选中复选框事件,将返回所有选中复选框数据  
异步加载数据

vue自定义变量和函数说明

Default single selection
``` bash
:treeNode     type:json    default:[]
```
标准json tree节点,name属性必填
``` bash
:allOpen      type:boolean    default:false
```
开启/关闭所有节点
``` bash
:nodeTrigger     type:boolean     default:false
``` 
点击节点是否触发节点事件
``` bash
@call    type:Function     parameter:inside treeNode,You can change it and the page will be re-rendered.
```
初始化回调函数 参数为节点数据的深拷贝,你可以修改此数据,tree将会重新渲染
``` bash
:beforeClick    type:Function     parameter:Current node information(参数:当前节点信息)
```
击节点前触发回调函数,return false 无法触发clickNode事件
``` bash
:clickNode    type:Function     parameter 1:Current node information,parameter 2:Last selected node information(上一个选中的节点信息)
```
点击节点 回调函数
``` bash
:checkBox    type:boolean     default:false
```
开启/关闭复选框
``` bash
:checkBoxType    type:boolean     default:true
```
开启/关闭级联选中  
``` bash
@checkBoxCall    type:Function     parameter:All selected node sets(所有选中的节点集合)
```
选中/取消选中复选框回调函数
``` bash
:async    type:boolean     default:false
```
是否开启异步 默认关闭
``` bash
:asyncCall    type:Function     parameter 1:Current node information,parameter 2:callback function,Receive an array parameter  
Example:

asyncCall(data, call) {    //data:Current node information
        setTimeout(function () {
          let hm = '' + (new Date()).getTime();
          let addNode = [
            {id: hm, name: "children node" + hm.substr(hm.length - 4, hm.length)},
          ];
          call(addNode);  //callback function
        }, 800);
      }
```
异步回调函数function(data,call),data:current node, call 回调执行,接收一个数组参数

一个完整的示例:
``` bash
    <Tree
        :treeNode="treeNode"
        :allOpen="allOpen"
        :nodeTrigger="nodeTrigger"
        :checkBox="checkBox"
        :beforeClick="beforeClick"
        :checkBoxType="checkBoxType"
        :clickNode="clickNode"
        :hiddenLine="hiddenLine"
        @checkBoxCall="asyncCheckBoxCall"
        @call='callAsync'
        :async="async"
        :asyncCall="asyncCall"
    />
```

## Pull Request


## Build Setup
``` bash
# install dependencies
npm install

# serve with hot reload at localhost:8089
npm run dev
```