V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
0f2e3z8n4z
V2EX  ›  程序员

如何根据 json 生成无限极动态菜单

  •  
  •   0f2e3z8n4z · 2016-09-25 20:46:14 +08:00 · 4090 次点击
    这是一个创建于 2960 天前的主题,其中的信息可能已经有所发展或是发生改变。
    //每一个菜单是平行的。
    {
    	"MENU_ID": 1,
    	"MENU_NAME": "系统管理",
    	"MENU_URL": "#",
    	"PARENT_ID": "0",//顶级菜单
    	"MENU_ORDER": "1"//菜单的顺序
    },
    {
    	"MENU_ID": 2,
    	"MENU_NAME": "权限管理",
    	"MENU_URL": "#",
    	"PARENT_ID": "1",//父级菜单是系统管理
    	"MENU_ORDER": "1"//菜单的顺序
    }
    
    ...后面还有好多菜单
    

    MENU_ID 是菜单的标识符

    PARENT_ID 说明父级菜单是谁

    DOM 结构

    <ul>
        <li>
        	<a>系统管理</a>
            <ul>
                <li>
                	<a>权限管理</a>
                    <!-- 后面也许还有子菜单,也许子菜单后面还有子菜单  -->
                </li>
            </ul>
        </li>
    </ul>
    

    我的思路是用一个数据来存储顶级菜单和它的子菜单,然后用字符串一个一个拼起来

    但是我发现,我在写的过程中要使用很多的 for 循环,而且我自己写的时候写的挺乱的。

    这种问题是不是用设计结构会好解决一点?不过数据结构上学期学了,这学期都忘了不少 = =

    6 条回复    2016-09-27 10:30:52 +08:00
    sherlocktheplant
        1
    sherlocktheplant  
       2016-09-25 20:50:24 +08:00
    用递归
    Spectre
        2
    Spectre  
       2016-09-25 22:37:23 +08:00
    ztree
    0f2e3z8n4z
        3
    0f2e3z8n4z  
    OP
       2016-09-26 00:25:24 +08:00 via Android
    @Spectre 不打算用插件
    reus
        4
    reus  
       2016-09-26 03:38:26 +08:00   ❤️ 1
    bramblex
        5
    bramblex  
       2016-09-26 03:45:23 +08:00
    0f2e3z8n4z
        6
    0f2e3z8n4z  
    OP
       2016-09-27 10:30:52 +08:00
    @reus thx
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2658 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:31 · PVG 23:31 · LAX 08:31 · JFK 11:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.