var data = { 0: {YY:"string1",HLS:"string2",YZ:"string3"}, 1: {DV:"string4",TYH:"string5",NM:"string6"} }; 如何将这个数据 渲染为lay ui 下拉菜单树
时间: 2023-07-05 09:27:48 浏览: 161
基于layui的下拉列表的数据回显方法
5星 · 资源好评率100%
首先需要将数据转化为 tree 模块所需的格式,即将每个节点的数据分别存放在 `title` 和 `id` 属性中,同时在每个节点中添加 `children` 属性作为子节点。
下面是一个转化数据的示例代码:
```javascript
var treeData = [];
for (var key in data) {
if (data.hasOwnProperty(key)) {
var node = {
id: key,
title: '',
children: []
};
for (var prop in data[key]) {
if (data[key].hasOwnProperty(prop)) {
node.children.push({
id: prop,
title: data[key][prop]
});
}
}
treeData.push(node);
}
}
```
这段代码会将 `data` 中的每个节点转换为一个树节点,其中节点的 `id` 为该节点在 `data` 中的键名,`title` 为空,`children` 为该节点的子节点数组,子节点的 `id` 为该节点在 `data[key]` 中的键名,`title` 为该节点的值。
接下来,我们可以使用 layui 的 `tree` 模块来渲染下拉菜单树。下面是一个示例代码:
HTML:
```html
<div class="layui-inline">
<div class="layui-input-inline">
<select id="mySelect" lay-search=""></select>
</div>
</div>
```
JavaScript:
```javascript
layui.use(['layer', 'tree', 'form'], function () {
var layer = layui.layer;
var tree = layui.tree;
var form = layui.form;
// 将数据转换为树格式
var treeData = [];
for (var key in data) {
if (data.hasOwnProperty(key)) {
var node = {
id: key,
title: '',
children: []
};
for (var prop in data[key]) {
if (data[key].hasOwnProperty(prop)) {
node.children.push({
id: prop,
title: data[key][prop]
});
}
}
treeData.push(node);
}
}
// 渲染下拉菜单树
tree.render({
elem: '#mySelect',
data: treeData,
showCheckbox: false,
id: 'myTree',
click: function (obj) {
// 选中节点后的回调函数
console.log(obj.data); // 输出选中的节点数据
}
});
// 重新渲染下拉菜单
form.render('select');
});
```
在这段代码中,我们使用了和上面相同的数据转换方法,并使用 `tree.render()` 方法渲染下拉菜单树。其中,`elem`表示渲染的目标元素,`data`表示菜单数据,`showCheckbox`表示是否显示复选框,`id`表示树的 ID,`click`表示选中节点后的回调函数。最后,我们使用 `form.render()` 方法重新渲染下拉菜单。
阅读全文