如何在 Vue.js 中的 4 个元素之后每次添加一个元素?

Posted

技术标签:

【中文标题】如何在 Vue.js 中的 4 个元素之后每次添加一个元素?【英文标题】:How can I add a element everytime after 4 elements in Vue.js? 【发布时间】:2017-08-30 15:34:57 【问题描述】:

我正在将我的代码迁移到 Vue.js,这对 Vue 来说非常新。正如你看到的截图(下面的链接),在 div 中有 4 列 columns 类名。我试图使用 v-if 有条件地添加 div(class columns) 但我不知道如何在 Vue 中获取列元素的长度。

示例代码

<template lang="pug">
.container
  .columns(v-if="") // add this conditionally
    .column.is-3.vid(v-for='item in items')
      .panel
        p.is-marginless
         a(href=item.videoId)
           img(src=item.thumbnail)
        .panel.vidInfo
          .columns.hax-text-centered
            .column
              .panel-item.reddit-ups
                | item.score
                i.fa.fa-reddit-alien.fa-2x
              .panel-item.reddit-date
                i.fa.fa-calendar.fa-2x
</template>

【问题讨论】:

v-if="items.length === &lt;whatever&gt;"? @AmreshVenugopal 这只能工作一次。 v-if 循环中没有 v-for 循环 如果 items.length === 某个特定数字或 ?,您希望添加 .columns 今天在 SO 上有很多类似的问题。我会问同样的问题;你有什么理由将物品分成不同的容器?你也许可以使用 CSS 来实现你想要的。 @Phil 我正在使用 bulma css 框架,所以我只是遵循指南! 【参考方案1】:

你可以像这样访问 v-for 迭代次数:

改变

 .column.is-3.vid(v-for='item in items')

.column.is-3.vid(v-for='(item, index) in items')

然后在需要它的地方检查索引:

v-if="(index % 4 === 0) ? 'show it after every 4 elements' : ''"

例如,注入一个跨度:

<span v-if="index % 4 === 0">after 4</span>

【讨论】:

但我想在 for 循环之外使用索引。正如你看到的代码

以上是关于如何在 Vue.js 中的 4 个元素之后每次添加一个元素?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js:如何使转换组只触发一次?

如何利用Vue.js库中的v-html指令添加html元素

如何利用Vue.js库中的v-html指令添加html元素

如何使用 Vue.js 和 Tailwind 基于数组中的元素有条件地将多个类添加到 <span>?

下载vue.js

vue 组件开发实战