Вот кодовая ручка, которая воспроизводит сценарий: https://codepen.io/anon/pen/vzqgJB
У меня есть router-view
внутри vuetify's v-app
.
<div id="app">
<v-app>
<v-content>
<v-container>
{{$route.path}}
<router-view/>
</v-container>
</v-content>
</v-app>
</div>
Конфигурация маршрутизации следующая:
const routes = [
{ path: '', component: tabsComponent,
children:[
{ path: '', component: component1 },
{ path: 'component2', component: component2 }
]
},
]
Я использую v-tabs
компонент Vuetify для рендеринга 2 вкладок, которые загружают component1
и component2
соответственно.
var tabsComponent = Vue.component('tabsComponent',{
components:{
component2,
component1
},
name:'tabsComponent',
template: `
<v-tabs>
<v-tab to="/">Tab 1</v-tab>
<v-tab to="/component2">Tab 2</v-tab>
<v-tabs-items>
<v-tab-item id="/">
<component1></component1>
</v-tab-item>
<v-tab-item id="/component2">
<component2></component2>
</v-tab-item>
</v-tabs-items>
</v-tabs>
`,
mounted(){
this.$nextTick(()=>{
console.log("tabs")
console.log(this.$el.offsetWidth)
})
}
})
Проблема, с которой я сталкиваюсь, заключается в том, чтокогда component1
смонтирован, this.$el.offsetWidth
возвращается как 0
.
var component1 = Vue.component('component1',{
name: 'component1',
template: `
<v-container fluid>John </v-container>
`,
mounted(){
this.$nextTick(()=>{
console.log("component1")
console.log(this.$el.offsetWidth) // This is printed as 0
})
}
})
Я не могу понять, почему ширина возвращается как 0, даже если родительские компоненты имеют ненулевое значение offsetWidth,Любая помощь будет оценена.