Измените только первый значок в элементе v-списка с помощью vuetify

#javascript #vue.js #vuetify.js

Вопрос:

У меня есть список предметов, для каждого предмета это значок раньше. Я хочу изменить значок с пустого круга на отмеченный круг, когда я нажимаю на него. Но когда я нажимаю на первый значок, все значки проверяются, потому что у них одна и та же v-модель. Как я могу сделать это, когда я нажимаю на первый значок, меняется только первый значок? Это то, что у меня есть:

     <v-list-item v-for="(item, index) in itemSubtasks" :key="index">
                <v-list-item-action style="padding-top: 20px;">
                  <v-icon v-show="showDoneSub" @click="clickSubtask"> mdi-circle-outline
                  </v-icon>
                  <v-icon v-show="showUnDoneSub" @click="unDoneSubtask">
                    mdi-checkbox-marked-circle-outline </v-icon>
                </v-list-item-action>
                <v-list-item-content>
                  <v-list-item-title>
                    <v-text-field v-model="item.title"></v-text-field>
                  </v-list-item-title>
                </v-list-item-content>
              </v-list-item>
 

Они объявлены:

     itemSubtasks: [{
        title: 'My custom subtask 1',
      },
      {
        title: 'My custom subtask 2',
      },
    ],
    showDoneSub: true,   //empty circle
    showUnDoneSub: false,   //circle checked 
 

Таковы методы:

   clickSubtask() {
    this.showDoneSub = false
    this.showUnDoneSub = true
  },
  unDoneSubtask() {
    this.showDoneSub = true
    this.showUnDoneSub = false
  },
 

Это то, что мне нужно

Ответ №1:

Определите свойство, которое называется currentDoneIndex , а затем обновите, используя индекс значка щелчка:

      <v-icon v-if="currentDoneIndex!==index" @click="clickSubtask(index)"> mdi-circle-outline
          </v-icon>
    <v-icon v-ele @click="unDoneSubtask(index)">
                mdi-checkbox-marked-circle-outline </v-icon>
 

в объекте данных:

  currentDoneIndex:-1
 

в методах:

  clickSubtask(index) {
   this.currentDoneIndex = this.currentDoneIndex===index?-1:index
  },
  unDoneSubtask() {
     this.currentDoneIndex==-1
  },
 

Комментарии:

1. Работает отлично! Большое спасибо! Но еще один вопрос, пожалуйста, что делать, если я хочу проверить более одного?

2. вы можете определить массив