在遇到类似上图左侧这种多级菜单时大多数同学使用的都是递归渲染,但是有个每个层级下面究竟有多少层有多少子菜单全都是不确定的,如果JSON特别大的时候点击菜单就会特别卡。
如果JSON特别特别大就使用按需加载再渲染,就像此前有个兄弟做的地图软件,JSON有20M里面都是经纬度,这种还是按需加载比较好。
如果比常规的要大很多,但是也到不了按需加载的程度,就像上面的左侧菜单一样,就使用按需渲染吧,如果你一次性递归渲染肯定是非常卡的,最好如下操作:
1、先加载下来全部数据
2、先渲染第一层,将其子菜单设为空数组[],当点击该菜单键时,再将其子菜单那一层数据push进该数组进行渲染这层子菜单
3、如果再要点击查看该子菜单的子菜单,在将这子菜单push进该子菜单的数组渲染该层
逐层如此,按需渲染
{
"liClass": "active treeview",
"link": "index2.html",
"label": "结构预览",
"iClass": "'fa fa-dashboard'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "案例",
"iClass": "'fa fa-files-o'",
"spanClass": "pull-right-container",
"spanChildIClass": "label label-primary pull-right",
"children": [
{
"ulClass": "treeview-menu",
"children": [
{
"liClass": "treeview",
"link": "#",
"label": “文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "货商价格影响、环比",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "1.0.01",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "1.2.11",
"iClass": "'fa fa-circle-o'",
"children": []
}
]
}
]
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-share'",
"spanClass": "pull-right-container",
"spanChildIClass": "fa fa-angle-left pull-right",
"children": [
{
"ulClass": "treeview-menu",
"children": [
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"spanClass": "pull-right-container",
"spanChildIClass": "fa fa-angle-left pull-right",
"children": [
{
"ulClass": "treeview-menu",
"children": [
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"spanClass": "pull-right-container",
"spanChildIClass": "fa fa-angle-left pull-right",
"children": [
{
"ulClass": "treeview-menu",
"children": [
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
}
]
}
]
}
]
}
]
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"spanClass": "pull-right-container",
"spanChildIClass": "fa fa-angle-left pull-right",
"children": [
{
"ulClass": "treeview-menu",
"children": [
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"spanClass": "pull-right-container",
"spanChildIClass": "fa fa-angle-left pull-right",
"children": [
{
"ulClass": "treeview-menu",
"children": [
{
"type": "li",
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
}
]
}
]
}
]
}
]
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"spanClass": "pull-right-container",
"spanChildIClass": "fa fa-angle-left pull-right",
"children": [
{
"ulClass": "treeview-menu",
"children": [
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"spanClass": "pull-right-container",
"spanChildIClass": "fa fa-angle-left pull-right",
"children": [
{
"ulClass": "treeview-menu",
"children": [
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
}
]
}
]
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"spanClass": "pull-right-container",
"spanChildIClass": "fa fa-angle-left pull-right",
"children": [
{
"ulClass": "treeview-menu",
"children": [
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
},
{
"liClass": "treeview",
"link": "#",
"label": "文字",
"iClass": "'fa fa-circle-o'",
"children": []
}
]
}
]
}
]
}
]
}
]
}
]
}