使用bootstrap-vue的Vue:在列表中始终阻止多个扩展列表元素(v-for)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用bootstrap-vue的Vue:在列表中始终阻止多个扩展列表元素(v-for)相关的知识,希望对你有一定的参考价值。

我正在使用vue和bootstrap-vue以及b-collapse的功能,在这种情况下,它用于v-for(列表)..

它运行良好,除了我无法弄清楚当单击一个新的list-element进行扩展时如何自动关闭展开的列表元素。

所以我的问题是:

当我点击一个新的列表元素进行扩展时,如何关闭展开的?

备注:我正在使用如下唯一值生成v-b-toggle =“”:

<i v-b-toggle="'collapse' + key + index"

这是我的代码:

<div v-for="(item, key, index) in nluData">
   <div v-for="(item, key, index) in nluData">
       <div class="alert alert-warning">
           <i v-b-toggle="'collapse' + key + index">&nbsp;</i>
       </div>

   <b-collapse :id="'collapse' + key + index">
       <b-card style="background-color:#f0f8ff; margin-right:-30px;">
           ....
       </b-card>
   </b-collapse>
</div>

@ sklingler93之后的更新建议:

更改为以下内容:

<i @click="expanded=key">&nbsp;</i>
<b-collapse :id="'collapse' + key + index" visible="key == expanded">

Vue数据属性:

 export default {
data() {
      return {
          expanded: 0
          }
      }

我尝试了扩展的不同类型(字符串,布尔值,整数)这最终扩展了所有内容,并且以下警告如何:

无效的道具:支柱“可见”的类型检查失败。预期布尔值,得到字符串。

答案

b-collapse有一个可以设置的可见属性。因此,如果您在data中声明一个变量以跟踪扩展哪个b-collapse,您可以使用:

<div v-for="(item, key, index) in nluData">
   <div v-for="(item, key, index) in nluData">
       <div class="alert alert-warning">
           <i @click="expanded=key">&nbsp;</i>
       </div>

   <b-collapse :visible="key === expanded">
       <b-card style="background-color:#f0f8ff; margin-right:-30px;">
           ....
       </b-card>
   </b-collapse>
   </div>
</div>

以上是关于使用bootstrap-vue的Vue:在列表中始终阻止多个扩展列表元素(v-for)的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap-Vue 模态:如何在 V-For 渲染列表中打开不同的模态?

无法在模式页脚的 bootstrap-vue 列中居中选择列表和分页器

有没有办法在 beforeRouteEnter 中显示 bootstrap-vue $toast 反馈?

Vue.js - 选择/下拉选定项 vm 绑定不起作用(bootstrap-vue)

如何使用 npm 在 vue.js 中包含 bootstrap-vue?

如何使用 Vue 3 并添加插件 Bootstrap-vue?