这是一个数据结构问题。您可以将AXIOS响应重新构造为便于呈现特定树的数据结构:
-
在一个
computed property
(例如,命名为“phonegroups”),获取所有组,由
pid
属于
0
:
const groups = this.phoneList.filter(x => x.pid === 0);
-
对于每个组,获取属于该组的项,由
PID
与组ID匹配的:
const data = {};
for (const g of groups) {
const subitems = this.phoneList.filter(x => x.pid === g.id);
data[g.id] = {
group: g,
subitems,
};
}
return data;
-
在模板中,按如下方式呈现计算结果:
<ul>
<li v-for="({group, subitems}) in phoneGroups" :key="group.id">
<span>{{group.name}}</span>
<ol>
<li v-for="subitem in subitems">-- {{subitem.name}}</li>
</ol>
</li>
</ul>
demo