在组件内使用列表项 - Vue2

Posted

技术标签:

【中文标题】在组件内使用列表项 - Vue2【英文标题】:Using list items inside component - Vue2 【发布时间】:2019-02-28 01:21:05 【问题描述】:

使用 bootstrap-vue 及其列表项:

<b-nav pills>
  <b-nav-item v-for="item in items"> text </b-nav-item>
</b-nav>

我想实现以下目标:

当我点击某个项目时,它会获得一个活动状态(有内置指令:active,如果它返回true,那么它会获得一个活动类),但是如果我点击另一个项目,先前单击的项目也应保持活动状态,并且单击的新项目也应处于活动状态。所以我决定使用一个带有自己变量的组件来切换活动状态。但是我遇到了组件内部的问题,因为它必须有一个根div,所以我不得不这样使用它:

组件

<template>
  <div>
    <b-nav-item :active="selectedCategory"> category.price  ₸</b-nav-item>
  </div>
</template>

<script>
export default 
  name: 'Category',

  data () 
    return 
      selectedCategory: false
    
  

</script>

添加组件后的主模板

<b-nav pills>
  <Category v-for="item in items"/>
</b-nav>

如您所见,我使用了***div,它打破了我的布局。

问题如下:

    如何解决组件内部***div 的问题?所以我的列表项不会中断 在我的案例中使用组件是正确的决定吗? :active 属性应该在组件中还是在主模板中?

【问题讨论】:

你试过span而不是div吗? Span 是内联的,可能不会中断 span 有效,但这都是关于语义的,是否可以避免垃圾我的 html 标记? 【参考方案1】:

b-nav-item 应用一个类(例如,命名为“nav-item”),并将其display 设置为inline-block

.nav-item 
  display: inline-block;

demo

【讨论】:

以上是关于在组件内使用列表项 - Vue2的主要内容,如果未能解决你的问题,请参考以下文章

Vue2.5开发去哪儿网App 城市列表开发之 兄弟组件间联动及列表性能优化

Vue2子组件对象v-for列表渲染的奇怪问题

VUE2中文文档:进入离开和列表过度

vuejs 为网格内的列表项设置动画

在线性时间内将小的排序列表合并为更大的排序列表的算法,没有重复项

如何使用 React 删除列表项(功能组件)