gpt4 book ai didi

javascript - 在 vuejs 中嵌套 v-for 以获取 Accordion 数据

转载 作者:行者123 更新时间:2023-12-03 00:58:23 25 4
gpt4 key购买 nike

我正在 VueJS 2.5.17 上构建一个小型应用程序,其中我需要通过点击事件显示嵌套的 Accordion 数据,我有一个 Root -> Roles - 的层次结构 -> 特化 -> withRoles .... 等等。我试图在其各自 parent 的每次点击中获取子元素。

以下是我的 HTML 代码:

<div class="panel-group" id="accordion1" v-for="items in accordianData">

<div class="panel my-panel-warning">
<div class="panel-heading">
<h4 class="panel-title">
<a style="color: #000; font-size: 14px" data-toggle="collapse" data-parent="#accordion1" :href="'#'+items.id">DOCUMENTED RELATIONSHIPS ({{count}})</a>
</h4>
</div>
<div :id="items.id" class="panel-collapse collapse">
<div class="my-panel-body">
<div class="my-panel-body">
<div class="panel-group" :id="items.id" >
<div class="panel my-panel-warning" v-for="child1 in roles">
<div class="panel-heading">
<a data-toggle="collapse" :data-parent="'#'+items.id" :id="'child'+child1.id" :href="'#role'+child1.id" @click="getSpecialisation(child1.id, child1.name)">{{child1.name+" (0)"}}</a>
</div>
<div class="my-panel-body">
<div :id="'role'+child1.id" class="panel-collapse collapse">
<div class="panel my-panel-warning" v-if="child1.id === child2.parent_id" v-for="child2 in specialisations[child1.name]">
<div class="panel-heading">
<a data-toggle="collapse" :data-parent="'#role'+child1.id" :id="'child2'+child2.id" :href="'#spec'+child2.id" @click="getWithRoles(child2.id)">{{child2.name+" (0)"}}</a>
</div>
<div class="my-panel-body">
<div :id="'spec'+child2.id" class="panel-collapse collapse">
<div class="my-panel-body">
.
.
.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

并在我的方法中调用以下函数:

getSpecialisation(id, name) {
axios.get('specialisations?company_id='+this.company_id+'&role_id='+id, {headers: getHeader()}).then(response => {
if(response.status === 200)
{
this.specialisations[name] = response.data.specialisations

}
})
},

但是有些我无法显示数据。之前我尝试过 v-for="child2 in professionalizations" ,作为回应,我做了 this.specializations = response.data.specializations 我为所有 parent 获取了所有类似的子元素我知道这是错误的,但只是想通知我正在获取数据并且我的 Accordion 正在显示子元素,但是一旦我按照上面提到的方法 getSpecialization 执行操作,我就无法显示数据。

我可以在vue控制台中看到我的数据:

Specialisation建议我更好的方法。

谢谢

最佳答案

而不是 this.specializations[name] = response.data.specializations 尝试:

Vue.set(this.specialisations, name, response.data.specialisations)

这应该触发Vue's change-detection .

诗。当您看到大量嵌套时,这可能是将大组件拆分为较小组件的好时机。

关于javascript - 在 vuejs 中嵌套 v-for 以获取 Accordion 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52728181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com