Vuetify:如何收听对话的关闭事件?
Vuetify: How to listen close event of a dialog?
我觉得<v-dialog @close="close">
不行。
如何监听对话框的关闭事件?
vuetify 文档没有显示任何 close
对话框事件也许你可以仔细检查或澄清 vuetify 版本(如果是这样的话)
没有事件的解决方法可以使用 watch:
<script>
export default {
data(){
show:false
},
watch:{
show:function(newValue, old){
if(!newValue){
// Closing
}
}
}
}
</script>
并且您将对话框与 v-model 一起使用:<v-dialog v-model="show">
每当 show
等于 true
时,对话框就会显示,使用观察器您将知道何时将 show
设置为 false
并关闭对话框。
您可以实现自己的关闭事件。我的意思是,在您的关闭或保存按钮上单击您发出 'close'.
<template>
<v-dialog v-model="dialog">
<v-card>
...
<v-card-actions>
<v-spacer></v-spacer>
<v-btn text @click="close"> Close </v-btn>
<v-btn text @click="close"> Save </v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
export default {
props: ["dialog"],
methods: {
close() {
this.$emit("close");
},
},
};
</script>
为此,您实际上可以使用@input 事件。由于我的激活器按钮在我的组件之外,我使用“activated”道具来触发对话框,并且由于我们不应该从组件内部改变道具,所以我在对话框关闭时发出 update:activated
事件。
<template>
<v-dialog v-model="dialog" @input="close">
</v-dialog>
</template>
<script>
export default {
data() {
return {
dialog: false
};
},
props: {
activated: {
type: Boolean
}
},
watch: {
activated: {
immediate: true,
handler(newValue) {
if (newValue) {
this.dialog = true;
}
}
}
},
methods: {
close() {
this.$emit('update:activated', false);
}
}
};
</script>
我觉得<v-dialog @close="close">
不行。
如何监听对话框的关闭事件?
vuetify 文档没有显示任何 close
对话框事件也许你可以仔细检查或澄清 vuetify 版本(如果是这样的话)
没有事件的解决方法可以使用 watch:
<script>
export default {
data(){
show:false
},
watch:{
show:function(newValue, old){
if(!newValue){
// Closing
}
}
}
}
</script>
并且您将对话框与 v-model 一起使用:<v-dialog v-model="show">
每当 show
等于 true
时,对话框就会显示,使用观察器您将知道何时将 show
设置为 false
并关闭对话框。
您可以实现自己的关闭事件。我的意思是,在您的关闭或保存按钮上单击您发出 'close'.
<template>
<v-dialog v-model="dialog">
<v-card>
...
<v-card-actions>
<v-spacer></v-spacer>
<v-btn text @click="close"> Close </v-btn>
<v-btn text @click="close"> Save </v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
export default {
props: ["dialog"],
methods: {
close() {
this.$emit("close");
},
},
};
</script>
为此,您实际上可以使用@input 事件。由于我的激活器按钮在我的组件之外,我使用“activated”道具来触发对话框,并且由于我们不应该从组件内部改变道具,所以我在对话框关闭时发出 update:activated
事件。
<template>
<v-dialog v-model="dialog" @input="close">
</v-dialog>
</template>
<script>
export default {
data() {
return {
dialog: false
};
},
props: {
activated: {
type: Boolean
}
},
watch: {
activated: {
immediate: true,
handler(newValue) {
if (newValue) {
this.dialog = true;
}
}
}
},
methods: {
close() {
this.$emit('update:activated', false);
}
}
};
</script>