javascript - vue.js - 如何将对象数组拆分为多个 div 列

标签 javascript arrays vue.js vuejs2

这是我的 vue 布局:

<template lang="pug">
  .row
    .col-4(v-for="article in articles") // need to render 1-3 items here
      | {{ article.name }}
  .row
    .col-4(v-for="article in articles") // need to render 4-6 items here
      | {{ article.name }}
</template>

<script>
export default {
  name: 'Articles',
  data() {
    return {
      articles: [
        { name: 'Article 1' },
        { name: 'Article 2' },
        { name: 'Article 3' },
        { name: 'Article 4' },
        { name: 'Article 5' },
        { name: 'Article 6' },
      ]
    }
  },
}
</script>

目标是:

<div class="row">
  <div class="col-4">article[0].name</div>
  <div class="col-4">article[1].name</div>
  <div class="col-4">article[2].name</div>
</div>

<div class="row">
  <div class="col-4">article[3].name</div>
  <div class="col-4">article[4].name</div>
  <div class="col-4">article[5].name</div>
</div>

在 Flask 和 Jinja 等基于 Python 的微框架中,可以这样做:

{% for article_row in articles | batch(3, '&nbsp;') %}
  <div class="row">
    {% for article in article_row %}
    <div class="span4">{{ article }}</div>
    {% endfor %}
  </div>
{% endfor %}

那么,在 vue.js 中有没有办法像上面那样做?

最佳答案

我会使用 helper groups 数组来呈现行中的文章组:

<template lang="pug">
  .container
    .row(v-for="(group, i) in articleGroups")
      .col-4(v-for="article in articles.slice(i * itemsPerRow, (i + 1) * itemsPerRow)")
        | {{ article.name }}
</template>

<script>
export default {
  name: 'Articles',
  data() {
    return {
      itemsPerRow: 3,
      articles: [
        { name: 'Article 1' },
        { name: 'Article 2' },
        { name: 'Article 3' },
        { name: 'Article 4' },
        { name: 'Article 5' },
        { name: 'Article 6' },
      ]
    }
  },
  computed: {
    articleGroups () {
      return Array.from(Array(Math.ceil(this.articles.length / this.itemsPerRow)).keys())
    }
  },
}
</script>

演示: https://codesandbox.io/s/rj60o8l5p

关于javascript - vue.js - 如何将对象数组拆分为多个 div 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50038129/

相关文章:

javascript - 使用下拉选择选项按日期对列表进行排序

c++ - 将随机数插入数组,其中每个值都通过 for 循环输入

php - 如何使用Vue创建具有值的复选框

javascript - 单击按钮时在导航中 react 幻灯片

javascript - Node 需要路径引用问题

c - 使用 strcpy() 为结构体赋值。程序不运行

arrays - Powershell:如何动态更新嵌套的 JSON 数组?

javascript - 从主进程(Electron)捕获鼠标移动事件

javascript - Spring MVC @ResponseBody、JSON、JSP。尝试将 List<Objects> 从 Controller 返回到 JSP

javascript - Typeahead + Jquery + TypeError : $(. ..).typeahead 不是函数 + .mixin(Typeahead.prototype