用到的组件:el-drawer
父组件:
<template>
<div>
<el-button
type="primary"
@click="openDetailsDrawer">
View Details
</el-button>
<p>{{ myDrawer.visible }}</p>
<details-drawer
v-model:visible="myDrawer.visible"
:payload="myDrawer.payload"/>
</div>
</template>
<script lang="ts" setup>
import {reactive, nextTick, ref} from 'vue'
import DetailsDrawer from './components/DetailsDrawer/index.vue'
const myDrawer = reactive({
visible: false,
payload: {
title: '',
content: ''
}
})
const openDetailsDrawer = () => {
myDrawer.visible = true
nextTick(() => {
myDrawer.payload.title = '标题' + new Date().getTime()
myDrawer.payload.content = '内容' + new Date().getTime()
})
}
</script>
子组件:
<template>
<el-drawer
v-model="visible"
:title="payload.title"
:before-close="updateVisible">
<template #default>
{{ payload.content }}
<el-button @click="handleClose">Close</el-button>
</template>
</el-drawer>
</template>
<script lang="ts" setup>
import {defineProps, defineEmits} from 'vue'
const props = defineProps({
visible: {
type: Boolean,
default: false
},
payload: {
type: Object,
default: () => {
return {}
}
}
})
const emits = defineEmits<{
(e: 'update:visible', visible: boolean): void
}>()
const updateVisible = () => {
emits('update:visible', false)
}
</script>
问题
不论我在子组件<el-drawser/>
的
- :before-close ;
- @closed ;
- @close ;
任何一个方法调用 updateVisible 方法,都会报如下错误:
ReferenceError: visible is not defined
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.