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

如何在VueJS中定义v-for循环的起点

商池暝
2023-03-14

我有一组在循环中无限次生成的字段。基本上2个输入字段,一个标签和一个删除按钮。然后是另一个按钮,上面写着添加更多。

每次他们点击这个按钮,就会出现一组以上提到的内容。他们可以想做多少次就做多少次。看起来像这样。(我使用的是类星体,因此为什么使用q-“”元素)

// Click more button
<q-btn @click="onAddBarcodes" icon="add" no-caps color="primary">Add More</q-btn>


// Form
<div v-for="(barcode, index) in barcodes" :key="index">
    <div class="row q-pr-lg items-center">
        <div class="col-3">
             <label class="text-weight-medium">Starting Roll #:</label>
             <q-input v-model="barcode.start" :id="barcode.id"></q-input>
        </div>
        <div class="col-3">
             <label class="text-weight-medium">Ending Roll #:</label>
             <q-input v-model="barcode.end" :id="barcode.id"></q-input>
        </div>
        <div class="col-5">
             <label class="text-weight-medium">Agency Name:</label>
             <div v-if="barcode.agencyName">
                 {{ barcode.agencyName }}
             </div>
        </div>
        <div class="col-1">
             <q-btn @click="onDeleteBarcodes(barcode.id)" icon="close"/>
        </div>
    </div>
</div>


export default {
    data() {
        return {
            barcodes: []
        }
    },
    methods: {
        onAddBarcodes() {
            const newBarcode = {
                id: Math.random() * Math.random() * 1000,
                start: "",
                end: "",
                agencyName: ""
            };
            this.barcodes.push(newBarcode);
        },
        onDeleteBarcodes(id) {
            this.barcodes = this.barcodes.filter(barcode => barcode.id !== id);
        },
    }
 }

现在这是最基本的形式。我想做的是用已经开始的设定次数的迭代加载组件。例如,其中的5个。

如果他们需要更多,添加更多按钮将向前添加第6个。如果他们愿意,删除按钮应该删除到零(不是说他们会),但它肯定应该至少删除到1。

如何在特定的迭代次数下启动v-for

共有3个答案

韦原
2023-03-14

您可以在安装前在中调用onAddBarcodesn次:

beforeMount(){
   const n = 5; // Or any number
   Array.from(new Array(n)).forEach(el => this.onAddBarcodes());
}

应煌
2023-03-14

您可以在这里添加挂载的钩子并使用5个元素初始化集合

export default {
    data() {
        return {
            barcodes: []
        }
    },
    mounted() {
     this.barcodes = Array(5).fill(0).map(pr => ({
                id: Math.random() * Math.random() * 1000,
                start: "",
                end: "",
                agencyName: ""
            }))
    },
    methods: {
        onAddBarcodes() {
            const newBarcode = {
                id: Math.random() * Math.random() * 1000,
                start: "",
                end: "",
                agencyName: ""
            };
            this.barcodes.push(newBarcode);
        },
        onDeleteBarcodes(id) {
            this.barcodes = this.barcodes.filter(barcode => barcode.id !== id);
        },
    }
 }
关志勇
2023-03-14

您可以向created()vue实例上的barcode添加5项,如下所示:

created() {
    [...Array(5).keys()].forEach(() => this.onAddBarcodes())
}
 类似资料:
  • 本文向大家介绍在vue中使用v-for,如何控制循环的次数?相关面试题,主要包含被问及在vue中使用v-for,如何控制循环的次数?时的应答技巧和注意事项,需要的朋友参考一下 问题分vue2和vue3 vue2由于v-for优先级高于v-if,所以推荐使用计算属性控制长度 vue3由于v-if优先级高于v-for,可以使用v-if控制长度,当然还是推荐使用计算属性

  • 如下所示,我要反转数组。但我的代码不管用。这是我的for循环。请看一下。这个for循环正确吗。代码如下。

  • 本文向大家介绍v-for循环中key有什么作用?相关面试题,主要包含被问及v-for循环中key有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 四个字: 性能优化, 简述: 让vue在更新数据的时候可以更有针对性的

  • 我在mysql数据库中有一个数组数据,我想在使用Ajax得到结果后,用for循环逐个显示出来。过程是这样的。 这是将呈现每个项的段落 null 当我尝试使用for循环时,它会说语法错误,意外的for循环被取走,我该如何解决这个问题,例如,这里我使用sample for循环来使事情尽可能简单。

  • 我使用下面的代码来显示数组中的类别。数组可能包含重复的类别。有什么办法我只能选择独特的元素在VUEJS? 数组:

  • 我正在编写一个计算e^x值的方法。我在python中实现它的方式如下。 这将很好地返回e^x的值。但是,当我尝试在c#中实现相同的方法时,它没有输出与python中相同的值。以下是c#中的实现。 起初,这段代码的输出是一个无穷大符号。为了解决这个问题,我只是减少了循环运行的次数。在c#中,循环只运行10次,代码的输出非常接近于python中循环运行100次的输出。我的问题是,在不同的编程语言中,两