naive-ui-admin
naive-ui-admin copied to clipboard
关于判断路由下面的 children数量自动会变成嵌套的模式的修改建议
目前的情况是只要路由下面的 children数量大于1,就会变成嵌套模式;但是如果现在children有两个路由,其中一个将hidden设置为了true,这是也会变为嵌套模式,但实际展示在菜单中的还是一个页面,建议将判断改为children数量大于1并且hidden=true的数量不等于1
当只有一个子菜单的时候,嵌套路由, 会变成顶级路由,可以在 mate 里面把 这个参数 alwaysShow 设置成 false 关闭这个特性
当只有一个子菜单的时候,嵌套路由, 会变成顶级路由,可以在
mate里面把 这个参数alwaysShow设置成false关闭这个特性
您没有明白我的意思,我要的效果是子路由有两个,但是要显示为顶级路由,因为两个子路由只有一个会显示在菜单里,另一个只是这个第一个子菜单的子页面,比如:第一个子菜单为 /godsList,第二个子菜单为 /goodsDetail,商品详情页面是不需要显示在菜单中的
hidden 参数没有考虑在内,可以自行补充一下,这个特性或许别人不想这样、
我自己的项目已经改了,但是我建议把这个特性弄成一个meta参数,让使用者可以选择
可以,后续版本加上
大神们,我有个问题,就是我有一个页面,想通过点击某个按钮跳转到某个页面A,但是这个页面A我不想显示到左侧的菜单栏中,我将该页面hidden设置为true时,会将我上级菜单的名称给隐藏掉,我要如何做才能做到页面不在左侧列表中又能通过router-link进行跳转到页面A
@long5635152 请问你是怎么修改的那,我要是想要一个详情页面,这个页面不需要在菜单栏中显示,点击某个按钮后在跳转到详情页面
@lzb-libra @/utils/index.ts 里isRootRouter这个方法,改成如下:
export function isRootRouter(item) { if((item.meta?.alwaysShow != true && item.children?.length === 1) || (item.meta?.alwaysShow != true && item.children?.length > 1 && item.children?.filter(v=> !v.meta.hidden).length === 1)) { return true } else { return false } }
以前的逻辑是只判断alwaysShow和children的length,改了之后的逻辑其实就是增加了对hidden的判断。你的这个需求跟我这个其实是一样的,按我上面改了源代码后,你可以把点击的A页面和跳转的目标B页面都放在同一个菜单下,然后把B页面设置为hidden:true,这样应该就实现你的需求了
@long5635152 多谢大神指点,我也感觉咱俩是一个问题,研究了半天,主要是chrome不能debugger,没找到头绪,Thanks♪(・ω・)ノ
为什么判断alwaysShow 判断是 != true呢, 如果要按根节点显示,不考虑隐藏的,那也应该是 === true && item.children?.length === 1呀。
为什么判断
alwaysShow判断是!= true呢, 如果要按根节点显示,不考虑隐藏的,那也应该是=== true && item.children?.length === 1呀。
为 === true 更容易理解,开始文档描述是反的