Первая вкладка, которая будет выбрана по умолчанию

#vue.js #vuejs2 #vue-component #vuetify.js #vuex

#vue.js #vuejs2 #vue-компонент #vuetify.js #vuex

Вопрос:

У меня есть приложение vuejs / vuetify, в котором есть панели вкладок, использующие компоненты v-tabs / v-tab для навигации между страницами. К счастью, при нажатии на вкладку отображаются текущие данные, но мне нужно, чтобы при входе в приложение вкладка была открыта или выбрана по умолчанию. Вот компонент вкладки:

 <v-tabs  v-model="tab">
  <v-tab  v-for="file in selectedFiles" :currentTab="currentTab" :key="file.name"  @drop="onDrop($event, file)" @click="onTabSelect(file)">{{ file.name }}
  </v-tab>
  <v-spacer/>
</v-tabs>
 

и ссылки на вкладки файлов :

    export default {       
      name: 'FileTabs',
      data () {
        return {
          tab: false
        }
      },
      props: {
        selectedFile: null,
        selectedFiles: null
      },
      mounted () {
        this.tab = this.calcFileIndex()
      },
      watch: {
        selectedFile () {
          this.tab = this.calcFileIndex()
        }
      },
      methods: {
        onTabSelect (file) {
          this.$emit('select', file)
        },
        deleteTableRow: function (idx) {
          return this.selectedFiles.splice(idx, 1)
        },
        calcFileIndex () {
          if (this.selectedFile === 1) {
            return this.tab
          }
          const idx = this.selectedFiles.findIndex(({ name }) => name === this.selectedFile.name)
          if (idx < 0) {
            return this.tab
          }
          return idx
        }
      }
    }
 

Мне нужно, чтобы первая вкладка была выбрана по умолчанию.
Может кто-нибудь, пожалуйста, скажите мне, как я могу это сделать или предложить мне, как это сделать?

Заранее спасибо и приятного дня 🙂

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

1. установите значение по умолчанию на data(){return {tab:defaultTab}}

2. @DanielaC.Montenegro спасибо за ответ, я ценю это. Я попытался установить ‘tab: defaultTab’, но он не работает. Должен ли я где-нибудь объявить «defaultTab» или как это работает? Извините, я новичок в vuejs

3. как вы объявляете список вкладок?

4. @DanielaC.Montenegro вкладка, которую я вызываю из другого компонента, выглядит следующим образом: ` <Вкладки файлов: выбранные файлы =»Выбранные файлы» : выбранный файл =»Выбранный файл» v-on:select=»updateSelectedFile» v-if=»Выбранные файлы. длина > 0″/> ` где данные: ` data () { return { selectedFile: { code: null }, selectedFiles: [] } }, mounted () { this.selectedFiles = [] }, `

5. итак, вы устанавливаете индекс вкладки с выбранным файлом?

Ответ №1:

Измените логику вычисления индекса:

         calcFileIndex () {
          return this.selectedFile === 1    
                         ?    1
                         :    this.selectedFiles.findIndex(({ name }) => name === this.selectedFile.name);
        }
 

Затем в вашем наблюдателе проверьте индекс:

         selectedFile () {
          let index = this.calcFileIndex()
          if(index>0) 
              this.tab = index;
          else 
              this.tab = 1;
        }

 

Кроме того, установите реквизит лучше, если он числовой, затем введите тип как числовой и убедитесь, что он больше нуля:

 props:{
    selectedFile:{
       type:Number,
       default:1,
       validator:function(value){return value>0;}
    }
}
 

Вы можете проверить другие типы в документах, чтобы избежать странных ошибок.

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

1. индекс первой вкладки не равен нулю?

2. Я не владелец кода, вы также можете задать вопрос в комментариях к вопросу. Я сделал это, учитывая идентификатор из базы данных, а не индекс из списка.

3. @DanielaC.Montenegro Я изменил код, как вы написали, но показывает то же, что и раньше. По умолчанию первая вкладка не выбрана. Как ни странно, не работает..

4. Откройте Vue Devtools и запишите tab значение, чтобы мы могли его увидеть.