我试图找出在表中呈现子行的最佳方法。
我正在开发本质上是桌子+手风琴的东西。也就是说,当您单击该表以显示该条目的更多详细信息时,该表会添加更多行。
我的表位于 Researcher Groups 组件中,该组件有一个子组件:“app-researcher-group-entry (ResearcherGroupEntry)。
我正在使用 Vue-Material,但如果我使用普通的 .
无论如何,我的结构有点像:
// ResearcherGroups.vue
<template>
<md-table>
<md-table-row>
<md-table-head></md-table-head>
<md-table-head>Researcher</md-table-head>
<md-table-head>Type</md-table-head>
<md-table-head></md-table-head>
<md-table-head></md-table-head>
</md-table-row>
<app-researcher-group-entry v-for="(group, index) in researcherGroups" :key="group.label" :groupData="group" :indexValue="index"></app-researcher-group-entry>
</md-table>
</template>
在 ResearcherGroupEntry.vue 中:
<template>
<md-table-row>
<md-table-cell>
<md-button class="md-icon-button md-primary" @click="toggleExpansion">
<md-icon v-if="expanded">keyboard_arrow_down</md-icon>
<md-icon v-else>keyboard_arrow_right</md-icon>
</md-button>
<md-button @click="toggleExpansion" class="index-icon md-icon-button md-raised md-primary">{{indexValue + 1}}</md-button>
</md-table-cell>
<md-table-cell>{{groupData.label}}</md-table-cell>
<md-table-cell>Group</md-table-cell>
<md-table-cell>
<md-button @click="openTab" class="md-primary">
<md-icon>add_box</md-icon>
Add Client / Client Type
</md-button>
</md-table-cell>
<md-table-cell>
<md-button class="md-primary">
<md-icon>settings</md-icon>
Settings
</md-button>
</md-table-cell>
<app-add-client-to-group-tab :indexValue="indexValue" :groupData="groupData" :closeTab="closeTab" :addClientToGroupTab="addClientToGroupTab"></app-add-client-to-group-tab>
</md-table-row>
</template>
这就是问题所在。我希望能够从我们的模型中扩展这样的客户端:
如果我可以将另一个添加到 ResearcherGroupEntry 组件中,这将非常容易。不幸的是,用 div 或 span 标签包装在这里不起作用(它弄乱了表格)。
如果我没有使用 Vue Material,我可能会考虑为这个组件使用 JSX,因为这样我就可以简单地在父级中使用 .map 来基于两个变量创建一个组件数组。我可能仍然可以使用 v-for 指令来做到这一点,但我不确定。我可能需要做的是从道具创建一个疯狂的伪数组,合并父母和孩子,但那是UUUUUGLY代码。