Вы можете установить activeTab
в данных вашего компонента:
data: {
activeTab: 'tab1',
name:'',
email:''
},
, затем 2 простых метода для установки активной таблицы и возврата логического значения, которое вы будете использовать для визуализации html:
methods: {
isActiveTab(tabId){
return this.activeTab === tabId
},
setActiveTab(tabId){
this.activeTab = tabId
}
.. и вычисленное для вашего :disabled
свойство вашего элемента кнопки
computed: {
formIsComplete(){
//here you might want to add some more adequate validation rules
return this.email.length > 0 && this.name.length > 0
}
}
Html side:
<div id="app">
<div class="tab" v-if="isActiveTab('tab1')">
<h2>Tab 1:</h2>
<span> Whatever content you want in tab1</span>
<input v-model="email" type="email"/><label>Email</label>
<input v-model="name" type="text"/><label>Name</label
<button @click="setActiveTab('tab2')" :disabled="!formIsComplete">
Change tab
</button>
</div>
<div class="tab" v-if="isActiveTab('tab2')">
<h2>Tab 2:</h2>
<span> Congrats you made it to Tab2</span>
</div>
</div>
См. простую скрипку здесь