Файл _nav. js является просто примером структуры данных, которая может быть отображена компонентом CRenderFunction docs
Идея CRenderFunction заключается в том, что вы можете визуализировать компоненты из массива / Объект.
В вашем случае у вас есть две опции:
- создание объекта CRenderFunction на бэкэнде,
- создание объекта CRenderFunction на веб-интерфейсе по вычисленным свойствам на основе данных, которые вы получили из бэкэнда
Вот пример второго подхода:
в шаблоне
<CRenderFunction flat :content-to-render="navItems"/>
в сценарии:
//example array that you receive from backend
const menuItems = [
{
name: 'first item',
to: '/first',
icon: 'cil-user'
},
{
name: 'second item',
to: '/second'
},
{
name: 'third item',
to: '/third'
}
]
export default {
computed: {
navItems () {
return [
{
_name: 'CSidebarNav',
_children: this.sidebarNavChildren
}
]
},
sidebarNavChildren () {
return menuItems.map(menuItem => {
return {
_name: 'CSidebarNavItem',
name: menuItem.name,
to: menuItem.to,
icon: menuItem.icon || 'cil-spreadsheet'
}
})
}
}
}
Результат вычисляемого свойства navItems:
[{"_name":"CSidebarNav","_children": [
{"_name":"CSidebarNavItem","name":"first item","to":"/first","icon":"cil-user"},
{"_name":"CSidebarNavItem","name":"second item","to":"/second","icon":"cil-spreadsheet"},
{"_name":"CSidebarNavItem","name":"third item","to":"/third","icon":"cil-spreadsheet"}
]
}]