как добавить объект в массив сразу после установки пустым "[]" Vue - PullRequest
0 голосов
/ 20 января 2020

Мне нужно после вызова функции установить пустой массив и сразу добавить туда новый. Это происходит потому, что когда вызывается событие @click, мне нужно вызвать диалоговое окно и заполнить его содержимое динамическим c компонентом (который вызывается с помощью свойства slug ie), поэтому массив должен быть соответствующим образом изменен для передачи свойство пули ie к компоненту. Мой код:

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.

Каков будет правильный подход? Спасибо!

1 Ответ

0 голосов
/ 20 января 2020

Просто сделайте это:

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

this.slugs.push(slug);

Если у вас возникли проблемы с установкой пустого массива с присвоением [] массива и потерей реактивности, то вы можете попробовать следующее.

Это работает для меня в крайнем случае:

var i = slugs.length;

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

Вы должны сделать склейку в режиме реверса из-за путаницы с индексом: каждый раз останется элемент массива с индексом 1, если вы go выбросите l oop через

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

И после этого вы можете сделать:

this.slugs.push(slug);
...