【发布时间】:2021-01-08 10:07:49
【问题描述】:
基本上,我正在重构我的路线部分。我正在从这样的一个文件中导出多个变量
export default {contactRoutes,userRoutes,customerRoutes}
他们我得到这样的对象
{
"default": {
"contactRoutes": [{
"path": "/contacts",
"name": "contacts",
"component": {
"methods": {},
"components": {
"TableView": {
"methods": {},
"props": ["tableObj"],
"staticRenderFns": [],
"_compiled": true,
"__file": "resources/js/src/views/apps/table/TableView.vue"
},
"vSelect": {
"components": {
"Deselect": {
"staticRenderFns": [],
"_compiled": true
},
"OpenIndicator": {
"staticRenderFns": [],
"_compiled": true
}
},
"mixins": [{
"props": {
"autoscroll": {
"default": true
}
},
"watch": {},
"methods": {}
}, {
"watch": {},
"methods": {}
}, {
"props": {
"loading": {
"default": false
}
},
"watch": {},
"methods": {}
}],
"directives": {
"appendToBody": {}
},
"props": {
"value": {},
"components": {},
"options": {},
"disabled": {
"default": false
},
"clearable": {
"default": true
},
"searchable": {
"default": true
},
"multiple": {
"default": false
},
"placeholder": {
"default": ""
},
"transition": {
"default": "vs__fade"
},
"clearSearchOnSelect": {
"default": true
},
"closeOnSelect": {
"default": true
},
"label": {
"default": "label"
},
"autocomplete": {
"default": "off"
},
"reduce": {},
"selectable": {},
"getOptionLabel": {},
"getOptionKey": {},
"onTab": {},
"taggable": {
"default": false
},
"tabindex": {
"default": null
},
"pushTags": {
"default": false
},
"filterable": {
"default": true
},
"filterBy": {},
"filter": {},
"createOption": {},
"resetOnOptionsChange": {
"default": false
},
"clearSearchOnBlur": {},
"noDrop": {
"default": false
},
"inputId": {},
"dir": {
"default": "auto"
},
"selectOnTab": {
"default": false
},
"selectOnKeyCodes": {},
"searchInputQuerySelector": {
"default": "[type=search]"
},
"mapKeydown": {},
"appendToBody": {
"default": false
},
"calculatePosition": {}
},
"watch": {},
"methods": {},
"computed": {},
"staticRenderFns": [],
"_compiled": true
}
},
"staticRenderFns": [],
"_compiled": true,
"__file": "resources/js/src/views/apps/contacts/ContactsList.vue"
},
"title": "People",
"meta": {
"breadcrumb": [{
"title": "All Contacts",
"url": "/contacts"
}, {
"title": "All Contacts",
"active": true
}],
"pageTitle": "Contacts",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/contacts/view/:id",
"name": "contacts-view",
"meta": {
"breadcrumb": [{
"title": "All Contacts",
"url": "/contacts"
}, {
"title": "All Contacts",
"url": "/contacts"
}, {
"title": "View",
"active": true
}],
"pageTitle": "Contacts",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/contacts",
"name": "contacts",
"meta": {
"breadcrumb": [{
"title": "All Contacts",
"url": "/contacts"
}, {
"title": "All Contacts",
"active": true
}],
"pageTitle": "Contacts",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/contacts/view/:id",
"name": "contacts-view",
"meta": {
"breadcrumb": [{
"title": "Customer",
"url": "/customers/view/1"
}, {
"title": "Customer",
"url": "/customers/view/1"
}, {
"title": "View",
"active": true
}],
"pageTitle": "Contacts",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/contacts/add/:customer_id",
"name": "contacts-add",
"meta": {
"breadcrumb": [{
"title": "Customer",
"url": "/customers/view/1"
}, {
"title": "Customer",
"url": "/customers/view/1"
}, {
"title": "Add",
"active": true
}],
"pageTitle": "Contacts",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/contacts/edit/:id",
"name": "contacts-edit",
"meta": {
"breadcrumb": [{
"title": "Customer",
"url": "/customers/view/1"
}, {
"title": "Customer",
"url": "/customers/view/1"
}, {
"title": "Edit",
"active": true
}],
"pageTitle": "Contacts",
"rule": "admin",
"authRequired": true
}
}],
"userRoutes": [{
"path": "/users",
"name": "users",
"meta": {
"breadcrumb": [{
"title": "Users",
"url": "/users"
}, {
"title": "All Users",
"active": true
}],
"pageTitle": "Users",
"rule": "editor",
"authRequired": true
}
}, {
"path": "/users/user-add",
"name": "user-add",
"meta": {
"breadcrumb": [{
"title": "All Users",
"url": "/users"
}, {
"title": "All Users",
"url": "/users"
}, {
"title": "Add User",
"active": true
}],
"pageTitle": "Users",
"rule": "editor",
"authRequired": true
}
}, {
"path": "/users/view/:userId",
"name": "user-view",
"meta": {
"breadcrumb": [{
"title": "User",
"url": "/users"
}, {
"title": "All Users",
"url": "/users"
}, {
"title": "View",
"active": true
}],
"pageTitle": "Users",
"rule": "editor",
"authRequired": true
}
}, {
"path": "/profile/view",
"name": "profile-view",
"meta": {
"breadcrumb": [{
"title": "Profile Settings",
"active": true
}],
"pageTitle": "Settings",
"rule": "editor",
"authRequired": true
}
}, {
"path": "/users/edit/:userId",
"name": "user-edit",
"meta": {
"breadcrumb": [{
"title": "All Users",
"url": "/users"
}, {
"title": "All Users",
"url": "/users"
}, {
"title": "User Edit",
"active": true
}],
"pageTitle": "Users",
"rule": "editor",
"authRequired": true
}
}],
"customerRoutes": [{
"path": "/customers",
"name": "customers",
"component": {
"methods": {},
"components": {
"TableView": {
"methods": {},
"props": ["tableObj"],
"staticRenderFns": [],
"_compiled": true,
"__file": "resources/js/src/views/apps/table/TableView.vue"
},
"vSelect": {
"components": {
"Deselect": {
"staticRenderFns": [],
"_compiled": true
},
"OpenIndicator": {
"staticRenderFns": [],
"_compiled": true
}
},
"mixins": [{
"props": {
"autoscroll": {
"default": true
}
},
"watch": {},
"methods": {}
}, {
"watch": {},
"methods": {}
}, {
"props": {
"loading": {
"default": false
}
},
"watch": {},
"methods": {}
}],
"directives": {
"appendToBody": {}
},
"props": {
"value": {},
"components": {},
"options": {},
"disabled": {
"default": false
},
"clearable": {
"default": true
},
"searchable": {
"default": true
},
"multiple": {
"default": false
},
"placeholder": {
"default": ""
},
"transition": {
"default": "vs__fade"
},
"clearSearchOnSelect": {
"default": true
},
"closeOnSelect": {
"default": true
},
"label": {
"default": "label"
},
"autocomplete": {
"default": "off"
},
"reduce": {},
"selectable": {},
"getOptionLabel": {},
"getOptionKey": {},
"onTab": {},
"taggable": {
"default": false
},
"tabindex": {
"default": null
},
"pushTags": {
"default": false
},
"filterable": {
"default": true
},
"filterBy": {},
"filter": {},
"createOption": {},
"resetOnOptionsChange": {
"default": false
},
"clearSearchOnBlur": {},
"noDrop": {
"default": false
},
"inputId": {},
"dir": {
"default": "auto"
},
"selectOnTab": {
"default": false
},
"selectOnKeyCodes": {},
"searchInputQuerySelector": {
"default": "[type=search]"
},
"mapKeydown": {},
"appendToBody": {
"default": false
},
"calculatePosition": {}
},
"watch": {},
"methods": {},
"computed": {},
"staticRenderFns": [],
"_compiled": true
}
},
"staticRenderFns": [],
"_compiled": true,
"__file": "resources/js/src/views/apps/customers/CustomersList.vue"
},
"title": "People",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/customers/view/:id",
"name": "customers-view",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"url": "/customers"
}, {
"title": "View",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/customers",
"name": "customers",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/customers/view/:id",
"name": "customers-view",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"url": "/customers"
}, {
"title": "View",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/customers/add",
"name": "customers-add",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"url": "/customers"
}, {
"title": "Add",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/customers/edit/:id",
"name": "customers-edit",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"url": "/customers"
}, {
"title": "Edit",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}]
}
}
现在我想在一个循环中进行迭代。这可能吗?
在此之前我是这样一个一个地迭代循环
for (let route of adminRoutes) {
baseRoutes[0].children.push(route);
}
for (let route of userRoutes) {
baseRoutes[0].children.push(route);
}
但当时我的i是一个一个的导入文件,对象是这样的。
[{
"path": "/customers",
"name": "customers",
"component": {
"methods": {},
"components": {
"TableView": {
"methods": {},
"props": ["tableObj"],
"staticRenderFns": [],
"_compiled": true,
"__file": "resources/js/src/views/apps/table/TableView.vue"
},
"vSelect": {
"components": {
"Deselect": {
"staticRenderFns": [],
"_compiled": true
},
"OpenIndicator": {
"staticRenderFns": [],
"_compiled": true
}
},
"mixins": [{
"props": {
"autoscroll": {
"default": true
}
},
"watch": {},
"methods": {}
}, {
"watch": {},
"methods": {}
}, {
"props": {
"loading": {
"default": false
}
},
"watch": {},
"methods": {}
}],
"directives": {
"appendToBody": {}
},
"props": {
"value": {},
"components": {},
"options": {},
"disabled": {
"default": false
},
"clearable": {
"default": true
},
"searchable": {
"default": true
},
"multiple": {
"default": false
},
"placeholder": {
"default": ""
},
"transition": {
"default": "vs__fade"
},
"clearSearchOnSelect": {
"default": true
},
"closeOnSelect": {
"default": true
},
"label": {
"default": "label"
},
"autocomplete": {
"default": "off"
},
"reduce": {},
"selectable": {},
"getOptionLabel": {},
"getOptionKey": {},
"onTab": {},
"taggable": {
"default": false
},
"tabindex": {
"default": null
},
"pushTags": {
"default": false
},
"filterable": {
"default": true
},
"filterBy": {},
"filter": {},
"createOption": {},
"resetOnOptionsChange": {
"default": false
},
"clearSearchOnBlur": {},
"noDrop": {
"default": false
},
"inputId": {},
"dir": {
"default": "auto"
},
"selectOnTab": {
"default": false
},
"selectOnKeyCodes": {},
"searchInputQuerySelector": {
"default": "[type=search]"
},
"mapKeydown": {},
"appendToBody": {
"default": false
},
"calculatePosition": {}
},
"watch": {},
"methods": {},
"computed": {},
"staticRenderFns": [],
"_compiled": true
}
},
"staticRenderFns": [],
"_compiled": true,
"__file": "resources/js/src/views/apps/customers/CustomersList.vue"
},
"title": "People",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/customers/view/:id",
"name": "customers-view",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"url": "/customers"
}, {
"title": "View",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/customers",
"name": "customers",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/customers/view/:id",
"name": "customers-view",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"url": "/customers"
}, {
"title": "View",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/customers/add",
"name": "customers-add",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"url": "/customers"
}, {
"title": "Add",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}, {
"path": "/customers/edit/:id",
"name": "customers-edit",
"meta": {
"breadcrumb": [{
"title": "All Customers",
"url": "/customers"
}, {
"title": "All Customers",
"url": "/customers"
}, {
"title": "Edit",
"active": true
}],
"pageTitle": "Customers",
"rule": "admin",
"authRequired": true
}
}]
我想在一个循环中迭代 adminRoutes
【问题讨论】:
标签: javascript vue.js vuejs2 vue-component vue-router