自动生成导航栏和菜单的解决方案
来源:互联网 发布:淘宝7天无理由退换规则 编辑:程序博客网 时间:2024/05/16 23:42
自动生成导航栏和菜单的解决方案
系统是常见的左右结构的系统,左边是bootstrap的菜单,右边是内容页,内容页的顶部是导航,以前的做法是直接和菜单导航栏在页面里写死,但是后期改起来很不方便,后来经过努力终于完成自动生成菜单和导航栏的功能
一:自动生成菜单解决方案
后台建menu表
字段为id, menuName(菜单名), pid(父级id), ico(图标样式或img), url(用于页面跳转), order(排序字段)
这样可以通过权限表关联菜单表来实现控制,返回到前端页面,返回的是json格式
如var menuList = [{
"ico": "",
"id": 36,
"name": "采购任务",
"order": 0,
"pId": 1,
"url": ""
}, {
"ico": "",
"id": 37,
"name": "待采购列表",
"order": 0,
"pId": 36,
"url": "purchase/purchaseInit.do"
}, {
"ico": "",
"id": 38,
"name": "零星采购列表",
"order": 0,
"pId": 36,
"url": "purchase/getLXPurchaseH.do"
},]
前端通过layer模板渲染左侧的导航
二:面包屑导航栏的自动生成
导航栏的数据=点击的左侧菜单+通过按钮跳转的页面
要解决的问题:
1. 浏览器随意向前向后保证生成导航栏的正确性
2. 用户的操作是随机的肯能点击左侧菜单,浏览器刷新向前向后,或者点击导航栏的其中一项,或者是点击页面的超链接或按钮进入,如何保证导航栏生成数据的正确性
解决方案
Localstorage. navlist存储访问路径列表,注意列表navlist中的元素也是一个列表,其中存储的是不重复的访问路径,就像树的顶点到叶子节点的路径一样,其中左侧的菜单导航有pid和id
如果是从按钮导航点进去的话只有name和url
[
[{
"name": "采购任务",
"url": "",
"pId": 1,
"id": 36
}, {
"name": "待采购列表",
"url":"http://127.0.0.1:8180/erp/purchase/purchaseInit.do",
"pId": 36,
"id": 37
}, {
"name": "按物料查看",
"url":"http://127.0.0.1:8180/erp/purchase/purchaseByGoodsInit.do?state=2"
}],
[{
"name": "采购任务",
"url": "",
"pId": 1,
"id": 36
}, {
"name": "待采购列表",
"url": "http://127.0.0.1:8180/erp/purchase/purchaseInit.do",
"pId": 36,
"id": 37
}, {
"name": "按供应商查看",
"url":"http://127.0.0.1:8180/erp/purchase/purchaseBySupplierInit.do"
}, {
"name": " 查看详情",
"url": "http://127.0.0.1:8180/erp/purchase/supplierDInit.do"
}],
]
具体方法:
根据当前url判断是否在navlist中存在,如果存在则获取其中的数据,如果不存在则根据document.referrer(上一次的访问地址)判断是否需要新建分支或者直接追加到某个分支上,
三:有待优化的地方:
1. 数据可以在压缩下,比如把域名去掉,或者最终的数据对象是存储着name,url, pId,id,换成只存储id
2. 加快url的搜索速度,现在是两个for循环遍历来判断
- 自动生成导航栏和菜单的解决方案
- 纯 CSS3 的导航菜单生成工具和教程
- 侧栏自动定位的导航菜单代码实例详解
- markdown自动生成导航栏
- 透明状态栏和导航栏的解决方案
- 9款CSS菜单生成器/含在线CSS导航菜单生成和CSS菜单生成软件
- 9款CSS菜单生成器/含在线CSS导航菜单生成和CSS菜单生成软件
- android实现底部导航栏和顶部导航栏(相当于网页上的一级菜单和二级菜单)
- 【转载】自动生成CSS菜单的软件
- html用js实现导航栏的二级菜单,自动伸缩。。。
- OpenCMS动态生成导航菜单
- 自动收缩的JS+CSS三级折叠导航菜单
- iOS 导航栏隐藏和显示引起问题的解决方案
- 透明状态栏和导航栏的终极解决方案
- 开源透明状态栏和导航栏的终极解决方案
- 透明状态栏和导航栏的终极解决方案
- 透明状态栏和导航栏的终极解决方案
- 【实战干货】透明状态栏和导航栏的终极解决方案
- zabbix
- JVM体系结构
- [Leetcode]_16 3Sum Closest
- 《速度与激情8》中的信息安全技术
- springboot的模板引擎
- 自动生成导航栏和菜单的解决方案
- c++ assert() 使用方法
- Redhat 7.1 离线安装 gcc
- ZOJ 3780 Paint the Grid Again(拓扑排序)
- 【机器学习】生成模型和判别模型
- maven在eclipse中的配置(步骤)
- 【HomeBack】酷市场主题风格切换的简单实现
- 如何用Consul打造弹性可扩展的PaaS平台
- ssh公钥密钥无密码登陆