【发布时间】:2020-05-03 15:25:50
【问题描述】:
构建一个 bootstrap-vue 手风琴,一切都按预期工作,但是,我只是添加了全部展开/折叠所有按钮,这些按钮也可以按预期工作,但现在我的问题是当我直接单击任何手风琴面板时,它们全部打开。有没有办法让他们只打开点击的面板?
html:
<div class="container container-accordion-one">
<!--expand all / collapse all row -->
<div class="row row-expand-collapse">
<div class="offset-md-1 col-expand-collapse">
<ul class="list-expand-collapse">
<li><a href="#/" @click="showCollapse = true" class="font__card-body">Expand All</a></li>
<li><a href="#/" @click="showCollapse = false" class="font__card-body">Collapse All</a></li>
</ul>
</div>
</div>
<!--end: expand all / collapse all row -->
<div class="row">
<div class="offset-md-1 accordion-style-one">
<div role="tablist">
<b-card no-body class="">
<b-card-header href="#" v-b-toggle.accordion-1 header-tag="header" class="accordion-header" role="tab">
<p class="font__accordion-header">Accordion 1</p>
<i class="fal fa-plus accordionClosed" />
<i class="fal fa-minus accordionOpen" />
</b-card-header>
<b-collapse id="accordion-1" v-model="showCollapse" role="tabpanel">
<b-card-body>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio enim fugit, inventore odio odit perferendis quas quo veritatis voluptate.</p>
</b-card-body>
</b-collapse>
</b-card>
<b-card no-body class="">
<b-card-header href="#" v-b-toggle.accordion-2 header-tag="header" class="accordion-header" role="tab">
<p class=" font__accordion-header">Accordion 2</p>
<i class="fal fa-plus accordionClosed" />
<i class="fal fa-minus accordionOpen" />
</b-card-header>
<b-collapse id="accordion-2" v-model="showCollapse" role="tabpanel">
<b-card-body>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio enim fugit, inventore odio odit perferendis quas quo veritatis voluptate.</p>
</b-card-body>
</b-collapse>
</b-card>
<b-card no-body class="">
<b-card-header href="#" v-b-toggle.accordion-3 header-tag="header" class="accordion-header" role="tab">
<p class=" font__accordion-header">Accordion 3</p>
<i class="fal fa-plus accordionClosed" />
<i class="fal fa-minus accordionOpen" />
</b-card-header>
<b-collapse id="accordion-3" v-model="showCollapse" role="tabpanel">
<b-card-body>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio enim fugit, inventore odio odit perferendis quas quo veritatis voluptate.</p>
</b-card-body>
</b-collapse>
</b-card>
</div>
</div>
</div>
</div>
js:
export default {
name: 'm',
components: {
LinksTo
},
data() {
return {
showCollapse: false
};
}
};
【问题讨论】:
-
每次折叠都需要有自己的 v-model 变量(可以使用真/假值数组)。由于您将所有折叠都绑定到同一个 v-model,当一个打开时它们都会打开,因此需要单独的 v-model
标签: javascript html vue.js bootstrap-vue