【发布时间】:2019-12-16 23:26:58
【问题描述】:
我的导航从 vue-router 获取路由,这样我就不用手动添加了。
这些路由以及它们的子路由都有一个名为“inMenu”的元布尔键。我只过滤了父路由而不是子路由。
var res = this.$router.options.routes.filter(function f(o) {
if (o.route.meta.inMenu === true) return true
if (o.children) {
return (o.children = o.children.filter(f)).length
}
})
这是我过滤父路由的方式,但我无法管理它来过滤子路由。
return this.$router.options.routes.filter(route => route.meta.inMenu === true);
这是一些示例数据:
{
"path": "/orders",
"component": {
"name": "Orders",
"__file": "src/views/Orders.vue",
},
"meta": {
"icon": "fa-history",
"title": "Abwicklungen",
"inMenu": true
},
"children": [
{
"path": "list",
"name": "orderList",
"component": {
"name": "OrderList",
"__file": "src/views/orders/list.vue",
},
"meta": {
"title": "Bestellliste",
"icon": "fa-circle-o",
"inMenu": true
}
},
{
"path": "details/:id",
"name": "orderDetails",
"component": {
"name": "OrderDetails",
"__file": "src/views/orders/details.vue"
},
"meta": {
"title": "Bestellung",
"icon": "fa-circle-o",
"inMenu": false
}
},
{
"path": "dailyclosing",
"component": {
"name": "OrderList",
"__file": "src/views/orders/list.vue",
},
"meta": {
"title": "Tagesabschluss",
"icon": "fa-check",
"inMenu": true
}
}
]
}
如果 inMenu 为 false,我希望不显示每条路线和子项。
【问题讨论】:
-
您能否提供示例数据并针对该数据显示您的预期结果?
-
你是否有意改变给定的数据?
-
第 5 行:
return (o.children = o.children.filter(f)).length有一个任务。是故意的吗? -
assoron:我已将示例数据添加到我的问题中。 NinaScholz:这是我唯一想到的 xD 先生:这是这篇文章的答案,但它不起作用,即使它们是示例工作。 stackoverflow.com/questions/38132146/…
-
我假设提供的对象是数组中的众多对象之一?此外,如果父项为 false,是否也应删除所有子项,还是仍要在没有父信息的情况下返回已过滤的子项?
标签: javascript vue.js recursion filter