Vuejs2 Vuetify:导航抽屉:将v型车型更改传达给母公司
我使用Vuetify的导航抽屉创建了一个边栏组件。代码如下所示:Vuejs2 Vuetify:导航抽屉:将v型车型更改传达给母公司,vuejs2,vuetify.js,Vuejs2,Vuetify.js,我使用Vuetify的导航抽屉创建了一个边栏组件。代码如下所示: <template> <v-navigation-drawer persistent clipped v-model="isVisible" fixed app> <!-- content of the sidebar goes here --> </v-navigation-drawer> </template> <script> expo
<template>
<v-navigation-drawer persistent clipped v-model="isVisible" fixed app>
<!-- content of the sidebar goes here -->
</v-navigation-drawer>
</template>
<script>
export default {
name: 'Sidebar',
props: {
visible: Boolean,
},
data() {
return {
isVisible: this.visible,
};
},
}
</script>
导出默认值{
名称:'侧边栏',
道具:{
可见:布尔,
},
数据(){
返回{
isVisible:this.visible,
};
},
}
请注意,我正在用isVisible数据复制visible道具。我尝试在v模型中直接使用道具,但每次侧边栏关闭时,我都会在控制台中收到一条关于直接更改道具的警告,因为当父级重新渲染时,道具将被覆盖
在父视图中,我在工具栏上有一个按钮,它应该根据工具栏的可见性更改图标
<template>
<v-container fluid>
<sidebar :visible="sidebarVisible"/>
<v-toolbar app :clipped-left="true">
<v-btn icon @click.stop="sidebarVisible = !sidebarVisible">
<v-icon v-html="sidebarVisible ? 'chevron_right' : 'chevron_left'"/>
</v-btn>
</v-toolbar>
<v-content>
<router-view/>
</v-content>
<v-footer :fixed="fixed" app>
<span>© 2017</span>
</v-footer>
</v-container>
</template>
<script>
import Sidebar from '@/components/Sidebar.vue';
export default {
name: 'MainView',
data() {
return {
sidebarVisible: false,
fixed: false,
title: 'Title',
};
},
components: {
Sidebar,
},
};
</script>
&抄袭;2017
从“@/components/Sidebar.vue”导入侧栏;
导出默认值{
名称:“MainView”,
数据(){
返回{
sidebarVisible:false,
修正:错误,
标题:“标题”,
};
},
组成部分:{
侧边栏,
},
};
我的问题是,如果我通过单击侧边栏外部来关闭侧边栏,工具栏上按钮的图标不会变为V形左。此外,为了恢复侧边栏,我需要点击按钮两次
显然,这是因为侧边栏关闭时,主视图中的侧边栏可见数据不会更新。如何确保边栏关闭时边栏可见被更新?我正在使用下一个构造 在我的组件中
<template>
<v-navigation-drawer v-model="localDrawer"></v-navigation-drawer>
</template>
...
<script>
export default {
props: { value: { type: Boolean } },
data: () => ({
localDrawer: this.value
}),
watch: {
value: function() {
this.localDrawer = this.value
},
localDrawer: function() {
this.$emit('input', this.localDrawer)
}
}
}
</script>
...
导出默认值{
属性:{value:{type:Boolean}},
数据:()=>({
localDrawer:this.value
}),
观察:{
值:函数(){
this.localDrawer=this.value
},
localDrawer:function(){
this.$emit('input',this.localDrawer)
}
}
}
在父层中
<app-drawer v-model="drawer"></app-drawer>
这对我来说很有用Vuetify导航抽屉问题修复:
<nav>
<v-toolbar flat app>
<v-toolbar-side-icon class="grey--text" @click="toggle"></v-toolbar-side-icon>
<v-toolbar-title class="text-uppercase grey--text">
<span class="font-weight-light">Repo</span>
<span>hub</span>
</v-toolbar-title>
<v-spacer></v-spacer>
<v-btn flat color="grey">
<span>Sign Out</span>
<v-icon right>exit_to_app</v-icon>
</v-btn>
</v-toolbar>
<v-navigation-drawer app v-model="drawer" class="indigo">
<p>test</p>
</v-navigation-drawer>
</nav>
使用v-bind:value或:value从道具绑定抽屉值 子组件:
<template>
<v-navigation-drawer v-bind:value="drawer"></v-navigation-drawer>
</template>
<script>
export default {
props : ['drawer']
}
</script>
<template>
<app-side-bar :drawer="drawer"/>
<v-app-bar app clipped-left>
<v-app-bar-nav-icon @click.stop="drawer = !drawer"></v-app-bar-nav-icon>
</v-app-bar>
</template>
导出默认值{
道具:[“抽屉”]
}
父组件:
<template>
<v-navigation-drawer v-bind:value="drawer"></v-navigation-drawer>
</template>
<script>
export default {
props : ['drawer']
}
</script>
<template>
<app-side-bar :drawer="drawer"/>
<v-app-bar app clipped-left>
<v-app-bar-nav-icon @click.stop="drawer = !drawer"></v-app-bar-nav-icon>
</v-app-bar>
</template>