Tree

Display a set of data with hierarchies.

Basic usage

Basic tree structure.

Selectable

Used for node selection.

This example also shows how to load node data asynchronously.

Custom leaf node in lazy mode

A node's data is not fetched until it is clicked, so the Tree cannot predict whether a node is a leaf node. That's why a drop-down button is added to each node, and if it is a leaf node, the drop-down button will disappear when clicked. That being said, you can also tell the Tree in advance whether the node is a leaf node, avoiding the render of the drop-down button before a leaf node.

Disabled checkbox

The checkbox of a node can be set as disabled.

In the example, 'disabled' property is declared in defaultProps, and some nodes are set as 'disabled:true'. The corresponding checkboxes are disabled and can't be clicked.

Default expanded and default checked

Tree nodes can be initially expanded or checked

Use default-expanded-keys and default-checked-keys to set initially expanded and initially checked nodes respectively. Note that for them to work, node-key is required. Its value is the name of a key in the data object, and the value of that key should be unique across the whole tree.

Checking tree nodes

This example shows how to get and set checked nodes. They both can be done in two approaches: node and key. If you are taking the key approach, node-key is required.

Custom node content

The content of tree nodes can be customized, so you can add icons or buttons as you will

There are two ways to customize template for tree nodes: render-content and scoped slot. Use render-content to assign a render function that returns the content of tree nodes. See Vue's documentation for a detailed introduction of render functions. If you prefer scoped slot, you'll have access to node and data in the scope, standing for the TreeNode object and node data of the current node respectively. Note that the render-content demo can't run in jsfiddle because it doesn't support JSX syntax. In a real project, render-content will work if relevant dependencies are correctly configured.

Custom node class

The class of tree nodes can be customized

Use props.class to build class name of nodes.

Tree node filtering

Tree nodes can be filtered

Invoke the filter method of the Tree instance to filter tree nodes. Its parameter is the filtering keyword. Note that for it to work, filter-node-method is required, and its value is the filtering method.

Accordion

Only one node among the same level can be expanded at one time.

Draggable

You can drag and drop Tree nodes by adding a draggable attribute.

Attributes

NameDescriptionTypeAccepted ValuesDefault
datatree dataarray
empty-texttext displayed when data is voidstring
node-keyunique identity key name for nodes, its value should be unique across the whole treestring
propsconfiguration options, see the following tableobject
render-after-expandwhether to render child nodes only after a parent node is expanded for the first timebooleantrue
loadmethod for loading subtree data, only works when lazy is truefunction(node, resolve)
render-contentrender function for tree nodeFunction(h, { node, data, store })
highlight-currentwhether current node is highlightedbooleanfalse
default-expand-allwhether to expand all nodes by defaultbooleanfalse
expand-on-click-nodewhether to expand or collapse node when clicking on the node, if false, then expand or collapse node only when clicking on the arrow icon.booleantrue
check-on-click-nodewhether to check or uncheck node when clicking on the node, if false, the node can only be checked or unchecked by clicking on the checkbox.booleanfalse
auto-expand-parentwhether to expand father node when a child node is expandedbooleantrue
default-expanded-keysarray of keys of initially expanded nodesarray
show-checkboxwhether node is selectablebooleanfalse
check-strictlywhether checked state of a node not affects its father and child nodes when show-checkbox is truebooleanfalse
default-checked-keysarray of keys of initially checked nodesarray
current-node-keykey of initially selected nodestring / number
filter-node-methodthis function will be executed on each node when use filter method. if return false, tree node will be hidden.Function(value, data, node)
accordionwhether only one node among the same level can be expanded at one timebooleanfalse
indenthorizontal indentation of nodes in adjacent levels in pixelsnumber18
iconcustome tree node icon componentstring | Component--
lazywhether to lazy load leaf node, used with load attributebooleanfalse
draggablewhether enable tree nodes drag and dropbooleanfalse
allow-dragthis function will be executed before dragging a node. If false is returned, the node can not be draggedFunction(node)
allow-dropthis function will be executed before the dragging node is dropped. If false is returned, the dragging node can not be dropped at the target node. type has three possible values: 'prev' (inserting the dragging node before the target node), 'inner' (inserting the dragging node to the target node) and 'next' (inserting the dragging node after the target node)Function(draggingNode, dropNode, type)

props

AttributeDescriptionTypeAccepted ValuesDefault
labelspecify which key of node object is used as the node's labelstring, function(data, node)
childrenspecify which node object is used as the node's subtreestring
disabledspecify which key of node object represents if node's checkbox is disabledstring, function(data, node)
isLeafspecify whether the node is a leaf node, only works when lazy load is enabledstring, function(data, node)
classcustom node class namestring, function(data, node)

Methods

MethodDescriptionParameters
filterfilter all tree nodes, filtered nodes will be hiddenAccept a parameter which will be used as first parameter for filter-node-method
updateKeyChildrenset new data to node, only works when node-key is assigned(key, data) Accept two parameters: 1. key of node 2. new data
getCheckedNodesIf the node can be selected (show-checkbox is true), it returns the currently selected array of nodes(leafOnly, includeHalfChecked) Accept two boolean type parameters: 1. default value is false. If the parameter is true, it only returns the currently selected array of sub-nodes. 2. default value is false. If the parameter is true, the return value contains halfchecked nodes
setCheckedNodesset certain nodes to be checked, only works when node-key is assignedan array of nodes to be checked
getCheckedKeysIf the node can be selected (show-checkbox is true), it returns the currently selected array of node's keys(leafOnly) Accept a boolean type parameter whose default value is false. If the parameter is true, it only returns the currently selected array of sub-nodes.
setCheckedKeysset certain nodes to be checked, only works when node-key is assigned(keys, leafOnly) Accept two parameters: 1. an array of node's keys to be checked 2. a boolean type parameter whose default value is false. If the parameter is true, it only returns the currently selected array of sub-nodes.
setCheckedset node to be checked or not, only works when node-key is assigned(key/data, checked, deep) Accept three parameters: 1. node's key or data to be checked 2. a boolean typed parameter indicating checked or not. 3. a boolean typed parameter indicating deep or not.
getHalfCheckedNodesIf the node can be selected (show-checkbox is true), it returns the currently half selected array of nodes-
getHalfCheckedKeysIf the node can be selected (show-checkbox is true), it returns the currently half selected array of node's keys-
getCurrentKeyreturn the highlight node's key (null if no node is highlighted)
getCurrentNodereturn the highlight node's data (null if no node is highlighted)
setCurrentKeyset highlighted node by key, only works when node-key is assigned(key, shouldAutoExpandParent=true) 1. the node's key to be highlighted. If null, cancel the currently highlighted node 2. whether to automatically expand parent node
setCurrentNodeset highlighted node, only works when node-key is assigned(node, shouldAutoExpandParent=true) 1. the node to be highlighted 2. whether to automatically expand parent node
getNodeget node by data or key(data) the node's data or key
removeremove a node, only works when node-key is assigned(data) the node's data or node to be deleted
appendappend a child node to a given node in the tree(data, parentNode) 1. child node's data to be appended 2. parent node's data, key or node
insertBeforeinsert a node before a given node in the tree(data, refNode) 1. node's data to be inserted 2. reference node's data, key or node
insertAfterinsert a node after a given node in the tree(data, refNode) 1. node's data to be inserted 2. reference node's data, key or node

Events

NameDescriptionParameters
node-clicktriggers when a node is clickedfour parameters: node object corresponding to the node clicked, node property of TreeNode, TreeNode itself, event object
node-contextmenutriggers when a node is clicked by right buttonfour parameters: event, node object corresponding to the node clicked, node property of TreeNode, TreeNode itself
check-changetriggers when the selected state of the node changesthree parameters: node object corresponding to the node whose selected state is changed, whether the node is selected, whether node's subtree has selected nodes
checktriggers after clicking the checkbox of a nodetwo parameters: node object corresponding to the node that is checked / unchecked, tree checked status object which has four props: checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys
current-changetriggers when current node changestwo parameters: node object corresponding to the current node, node property of TreeNode
node-expandtriggers when current node openthree parameters: node object corresponding to the node opened, node property of TreeNode, TreeNode itself
node-collapsetriggers when current node closethree parameters: node object corresponding to the node closed, node property of TreeNode, TreeNode itself
node-drag-starttriggers when dragging startstwo parameters: node object corresponding to the dragging node, event.
node-drag-entertriggers when the dragging node enters another nodethree parameters: node object corresponding to the dragging node, node object corresponding to the entering node, event.
node-drag-leavetriggers when the dragging node leaves a nodethree parameters: node object corresponding to the dragging node, node object corresponding to the leaving node, event.
node-drag-overtriggers when dragging over a node (like mouseover event)three parameters: node object corresponding to the dragging node, node object corresponding to the dragging over node, event.
node-drag-endtriggers when dragging endsfour parameters: node object corresponding to the dragging node, node object corresponding to the dragging end node (may be undefined), node drop type (before / after / inner), event.
node-droptriggers after the dragging node is droppedfour parameters: node object corresponding to the dragging node, node object corresponding to the dropped node, node drop type (before / after / inner), event.

Slots

NameDescription
Custom content for tree nodes. The scope parameter is { node, data }
Last Updated:
Contributors: Tam Mai