javascript - 从层次结构 MySQL 表生成 HTML 列表
问题描述
我有一个像这样的层次结构表
id| name | parent_id | header
1 | Assets | 0 | Y
2 | Fixed Assets | 1 | Y
3 | Asset One | 2 | N
4 | Income | 1 | N
我通过 axios 提取这些数据并尝试以以下方式呈现
我正在尝试像这样生成一个 UL LI 列表
<ul>
<li id="asset-main-id">
Assets
<ul>
<li id="fixed-asset-header">
Fixed Assets
<ul>
<li id="fa-asset-child-one">Asset One</li>
</ul>
</li>
<li id="asset-child">Income Receiveables</li>
</ul>
</li>
</ul>
这将是多重父子关系,这意味着它可以达到 10 个级别。我对如何实现这一目标感到困惑。
有人可以指导我实现这一目标吗?
虚拟有效载荷
[{id: 1, name: assets, parent_id: 0, header:Y}, {id: 2, name: Fixed Assets, parent_id: 1, header:Y} ....]
解决方案
我建议您使用数据结构作为@The_Cute_Hedgehod 提供嵌套的父子关系。
我可以添加一个示例,如何将您当前的 ds 转换为它。
获得给定的有效负载后,您始终可以使用自定义 vue 组件对其进行渲染
你可以在这里找到完整的工作示例: https ://codepen.io/omer-shacham/pen/xxbrxdO
示例数据
var data = [{
"id": 1,
"name": "Assets",
"children": [
{
"id": 2,
"name": "Fixed Assets",
"children": [
{
"id": 3,
"name": "Asset One",
}
]
},
{
"id": 1,
"name": "Income",
}
]
}
示例模板
<template>
<li>
{{ name }}
<ul v-if="children.size > 0">
<TreeNode v-for="child in children" :node="child"/>
</ul>
</li>
</template>
和你的根应用
<ul>
<TreeNode v-for="child in root" :child="child"/>
</ul>
推荐阅读
- html - Firefox中文本区域的闪烁高度=继承。这可能是什么原因?
- css - 我如何知道我的 WordPress 页面是否是使用 Bootstrap 制作的?
- docker - Docker - 如何通过 jwilder nginx-proxy 公开端口?
- c# - 如何从代码运行 Azure DevOps 管道?
- c++ - 为什么循环没有中断,并且 if 条件也没有按预期工作?
- reactjs - 登录后我的自定义路由无法正常工作
- php - 在 yii 框架中调用未定义的方法 stdClass::save()
- navigation - 想要在渐进式 Web 应用程序中使用 Navigation API 并想要添加自定义语音消息
- c# - Unity PlayMaker - 找不到动作脚本
- sql - MSSql - 选择语句不适用于所有列