#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
значение, чтобы мы могли его увидеть.