树组件

树组件 tree 是以树形为结构的菜单伸缩型组件,当前版本中,tree主要用于树菜单展示,交互性相对较弱。

示例

综合演示

  

无连接线风格

  

仅图标控制伸缩

  

手风琴模式

  

开启复选框

  

API

API 描述
var tree = layui.tree 获得 tree 模块。
tree.render(options) tree 组件渲染,核心方法。
tree.getChecked(id) 获取选中的节点数据
tree.setChecked(id, idArr) 设置对应 id 的节点选中
tree.reload(id, options) tree 实例重载

渲染

tree.render(options);

属性

属性名 描述 类型 默认值
elem

绑定元素选择器

string/DOM -
data

tree 的数据源。其格式详见:#data 格式

array -
id

设置实例唯一索引,用于其他方法传参使用。

string -
showCheckbox

是否显示复选框

boolean

false

edit

是否开启节点的右侧操作图标。支持以下可选值:

  • 若为 true,则默认显示「改删」图标
  • 若为 数组,则可自由配置操作图标,如:edit:['add', 'update', 'del'] ,且图标将按照数组的顺序显示。
boolean
array

false

accordion

是否开启手风琴模式

boolean

false

onlyIconControl

是否仅允许节点左侧图标控制展开伸缩。

  • 默认为 false,即点击节点本身也可控制伸缩
  • 若值为 true,则只能通过节点左侧图标来展开收缩
boolean

false

isJump

是否允许点击节点时弹出新窗口跳转。若为 true,则需在对应的 data 中设定 href 属性(url 格式)

boolean

false

showLine

是否开启节点连接线。若设为 false,则节点左侧出现三角图标。

boolean

true

customName 2.8.14+

自定义 data 数据源中常用的字段名称。

object -
text

自定义默认文本,object 类型。支持以下属性:

text: {
  defaultNodeName: '未命名', // 节点默认名称
  none: '无数据' // 数据为空时的提示文本
}  
click
节点被点击的回调函数。返回的参数如下:
click: function(obj){
  console.log(obj.data); // 得到当前点击的节点数据
  console.log(obj.state); // 得到当前节点的展开状态:open、close、normal
  console.log(obj.elem); // 得到当前节点元素
  
  console.log(obj.data.children); // 当前节点下是否有子节点
}
oncheck
点击复选框时的回调函数,返回的参数如下:
oncheck: function(obj){
  console.log(obj.data); // 得到当前点击的节点数据
  console.log(obj.checked); // 节点是否被选中
  console.log(obj.elem); // 得到当前节点元素
}
operate
点击节点的右侧操作图标的回调函数,返回的参数如下:
operate: function(obj){
  var type = obj.type; // 得到操作类型:add、edit、del
  var data = obj.data; // 得到当前节点的数据
  var elem = obj.elem; // 得到当前节点元素
  
  // Ajax 操作
  var id = data.id; // 得到节点索引
  if(type === 'add'){ // 增加节点
    //返回 key 值
    return 123;
  } else if(type === 'update'){ // 修改节点
    console.log(elem.find('.layui-tree-txt').html()); // 得到修改后的内容
  } else if(type === 'del'){ // 删除节点
    // …
  };
}

data 格式

属性名 描述 类型 默认值
title

节点标题

string -
id

节点唯一索引值,用于对指定节点进行各类操作

string -
field

节点字段名

string -
children

子节点。支持设定属性选项同父节点

array -
href

点击节点弹出新窗口对应的 url。需开启 isJump 基础属性才有效。

string -
spread

节点是否初始展开

boolean

false

checked

节点是否初始为选中状态。需开启 showCheckbox 基础属性时有效。

boolean

false

disabled

节点是否为禁用状态

boolean

false

您可以对上述 data 中常用的字段进行自定义名称 2.8.14+ :

var tree = layui.tree;
// 渲染
tree.render({
  elem: '', // 绑定元素选择器
  id: 'test', // 自定义 id 索引
  data: [], // 数据源
  customName: { // 自定义 data 字段名 --- 2.8.14+
    id: 'id',
    title: 'title',
    children: 'children'
  },
  // 其他属性 …
});

获取选中的节点数据

tree.getChecked(id);

  • 参数 id : 对应 tree 渲染时定义的 id 属性值
var tree = layui.tree;
// 渲染
tree.render({
  elem: '', // 绑定元素选择器
  id: 'test', // 自定义 id 索引
  // 其他属性 …
});
// 获取选中的节点数据
var checkData = tree.getChecked('test');

设置对应 id 的节点选中

tree.setChecked(id, idArr);

  • 参数 id : 对应 tree 渲染时定义的 id 属性值
  • 参数 idArr : 对应 tree 渲染时的 data 中的 id 属性值。数组格式,可设置多个。
var tree = layui.tree;
// 渲染
tree.render({
  elem: '', // 绑定元素选择器
  id: 'test', // 自定义 id 索引
  // 其他属性 …
});
// 设置对应 id 的节点选中
tree.setChecked('test', [1, 3]); // 批量勾选 id 为 1,3 的节点

重载

tree.reload(id, idArr);

  • 参数 id : 对应 tree 渲染时定义的 id 属性值
  • 参数 options : 基础属性配置项。#详见属性
var tree = layui.tree;
// 渲染
tree.render({
  elem: '', // 绑定元素选择器
  id: 'test', // 自定义 id 索引
  // 其他属性 …
});
// 重载
tree.reload('test', { // options
  data: []
});