如何设置为空“ []”后立即向数组添加对象Vue

问题描述 投票:0回答:1

我需要在调用函数后,设置为空数组,然后立即在其中添加一个新数组。这是因为当调用@click事件时,我需要调用一个对话框,并用动态组件(用子弹属性调用它们)填充其内容,因此应适当更改数组以将子弹属性传递给组件。我的代码是:

slugs: []

slugConversacion(slug) {
    if (this.slugs > 0) {
        this.slugs = []

    // this.slugs.splice(this.slugs.indexOf(slug), 0);
    // this.$delete(this.slugs, this.slugs.indexOf(slug))

    } 
    else {
        this.slugs.push(slug); 
    }
  }

<Conversacion
   v-for="slug in slugs"
   :key="slug.id"
   :slug="slug.slug"
></Conversacion>

这不起作用,因为当我单击事件slugConversacion()并设置了空数组时,只有再次单击时,才会填充。我认为这是用于if / else条件。

什么是正确的方法?谢谢!

arrays object vue.js conditional-statements push
1个回答
0
投票

只需这样做:

if (this.slugs.length > 0) {
    this.slugs = [];
}

this.slugs.push(slug);

如果在将[]分配给数组并失去反应性的情况下无法将数组设置为空,则可以尝试下一件事情。

这对我来说是最后的手段:

var i = slugs.length;

while(i --){
    slugs.splice(i, 1);
}

由于索引混乱,您应该在反转模式下进行拼接:如果每次通过]抛出循环,每次都会保留索引为1的数组元素。

slugs.forEach((item, index) => {
    slugs.splice(index, 1);
});

之后,您可以做:

this.slugs.push(slug);
© www.soinside.com 2019 - 2024. All rights reserved.