当前位置: 首页 > 知识库问答 >
问题:

Vue-基于父V-For数组获取当前索引/数组计数

司寇星海
2023-03-14

我有两个嵌套的< code>v-for元素,看起来像:

<div class="category" v-for="(category, categoryIndex) in categories">
    <div class="product" v-for"(product, productIndex) in cateogry)">
        {{product.name}}
    </div>
</div>

我想只展示前五个产品,不考虑类别数量和每个类别的产品数量。

如何在第二个 v-for 元素内获取累积索引计数(相对于从 categoryIndex 父数组显示的产品总数)?

共有2个答案

邓阳炎
2023-03-14

您可以通过将其 id 传递给函数并根据其返回值显示产品来检查产品是否在前五个产品呈现范围内。下面是一个示例

<template>
  <div>
    <div class="category" v-for="(category, categoryIndex) in categories" :key="categoryIndex">
      <div class="product" v-for="(product, productIndex) in category.products" :key="productIndex">
        <span v-if="incrementCount(product.id)">{{product.name}}</span>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      categories: [
        {
          products: [
            { id: 1, name: "1" },
            { id: 2, name: "2" },
            { id: 3, name: "3" },
          ]
        },
        {
          products: [
            { id: 4, name: "4" },
            { id: 5, name: "5" },
            { id: 6, name: "6" },
          ]
        }
      ]
    };
  },
  methods: {
    incrementCount: function(id) {
      let count = 0;
      for(let i = 0; i < this.categories.length; i++)
        for(let j = 0; j < this.categories[i].products.length; j++)
          if(count++ < 5 && this.categories[i].products[j].id===id)
            return true;
      return false;
    }
  },
};
</script>

相应地,输出将是:

1
2
3
4
5
薛欣荣
2023-03-14

如果我理解的话,事情会是这样的

<div class="category" v-for="(category, categoryIndex) in categories">
    {{ category.name }}
    <div class="product" v-for="(product, productIndex) in category.products.slice(0, nbProductToShow)">
        {{(categoryIndex*nbProductToShow)+(productIndex+1)}}
        {{product.name}}
    </div>
</div>

Vue

new Vue({
    data : {
        nbProductToShow : 5,
        categories : [{
                id : 3445,
                name : 'shoes',
                products : [
                    { id: 23234, name : 'Pink unicorn shoes'}, 
                    // ...
                ]
            },{
                id : 3447,
                name : 'hat',
                products : [
                    { id: 232, name : 'Pink long hat with unicorn'}, 
                    // ...
                ]
            }
        ]
    }
})
 类似资料:
  • 我们用v-for指令根据一组数组的选项列表进行渲染。v-for指令需要使用item in items形式的特殊语法,items是源数据数组并且item是数组元素迭代的别名。 <ul id="example-1"> <li v-for="item in items">{{ item.message }}</li> </ul> var example1 = new Vue({ el: '#

  • 我读过这篇文章,我有一个这样的数组: 如果出现错误,,和将成为字符串数组,并用相等的值填充。 在我的模板中,如果设置了erreur,我将执行以下操作: 我想使用当前索引来使用另一个数组中的值,这里是:。它不工作,给我的错误: 这个怎么解决?

  • 本文向大家介绍vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作,包括了vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作的使用技巧和注意事项,需要的朋友参考一下 前言 在 v-for 循环语句上,定义一个点击事件 传入两个参数(当行数据、当前事件对象),如下代码片段,当前事件对象必须加上 ‘$' 符号 不加'$‘报错: 加上'$‘: 点击行之后

  • 问题内容: 我有一个关联数组,我需要找到一个键的数字位置。我可以手动遍历数组以找到它,但是有没有更好的方法内置到PHP中呢? 问题答案:

  • #ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()

  • 我正在尝试将计数器列(和)添加到数据帧中,但使用等没有成功。下面是输入数据帧()和所需输出数据帧()以及几个错误输出的代码的代表。 通过排列两个变量来添加计数器列(dplyr) https://community.rstudio.com/t/how-to-add-a-counter-to-each-group-in-dplyr/12986/2 https://dplyr.tidyverse.org