v-tabsを使用して、Vuetify(v1.0.18)を使用して静的ナビゲーションをレンダリングしたい。ルーティングはサーバー側で行われるため、プロパティによってアクティブなタブを設定する方法が必要です。これは非常に基本的なタスクですが、動作しません。例:
<v-tabs>
<v-tab href="/path1">Tab 1</v-tab>
<v-tab href="/path2">Tab 2</v-tab>
</v-tabs>
これにより、最初のタブが事前に選択されます-正常です。
質問は次のとおりです。2番目のタブを事前選択する方法は?以下はnot動作します:
<v-tabs value="tab2">
<v-tab id="tab1" href="/path1">Tab 1</v-tab>
<v-tab id="tab2" href="/path2">Tab 2</v-tab>
</v-tabs>
回避策として、ラッパーコンポーネントを作成しました。
<template>
<v-tabs v-model="selectedTab">
<slot></slot>
</v-tabs>
</template>
<script>
export default {
name: 'StaticTabs',
props: [ 'selected' ],
mounted() {
this.selectedTab = this.selected
},
data: () => ({
selectedTab: null
}),
}
</script>
これと一緒に使用します:
<static-tabs selected="/path2">
<v-tab id="tab1" href="/path1">Tab 1</v-tab>
<v-tab id="tab2" href="/path2">Tab 2</v-tab>
</static-tabs>
非常に基本的なタスクのための多くのコードですが、動作します。
アクティブなタブを事前選択するには:
<v-tabs grow v-model="active_tab">
<v-tab v-for="tab of tabs" :key="tab.id">
{{tab.name}}
</v-tab>
</v-tabs>
スクリプト部分:
export default {
data: () => ({
active_tab: 2,
tabs: [
{ id: 1, name: 'tab1' },
{ id: 2, name: 'tab2' },
{ id: 3, name: 'tab3' }
]
})
}
注:tab3という名前のタブを事前選択しています。
Vuetifyは
active_tab
をアクティブなタブのインデックスに設定することに注意してください。したがって、id 3のアイテムのインデックスは0から始まるため2です。
この例では、vuetifyバージョン1.1.9を使用しました
つかいます v-model
:
<v-tabs v-model="activetab_href_variable">
現在のバージョンのドキュメントには(2018年5月17日)それに関する情報はありませんが、0.17( https://vuetifyjs.com/releases/0.17/#/components/tabs )には以下があります:
v-model文字列-現在選択されているタブ
_v-model
_をホストするコンポーネントのmounted()
コールバック内に_v-tabs
_を設定します
_<v-tabs v-model="selectedTab">
<v-tab key='first'>First</v-tab>
<v-tab key='second'>Second</v-tab>
</v-tabs>
<script>
export default {
...
mounted() {
this.selectedTab = 'first';
},
...
}
</script>
_
これでこれを解決しました。$ refs
<v-tab v-model="tab1" ref="tab1">
Tab1のテキストtab2のテキストtab3のテキスト
// Inside a method
someButton() {
this.$refs.tab2.click()
}