VUE弹窗的两种实现方式
方法一 使用.sync修饰符
element就是使用的这种方式,实现方式如下:
父组件:
-
<template>
-
<div id="demo">
-
<test-model :show.sync="showFlag"></test-model>
-
-
</div>
-
</template>
-
<script>
-
import testModel from 'src/components/testModel'
-
export default {
-
data(){
-
return{
-
showFlag: false
-
}
-
},
-
components: {
-
testModel,
-
}
-
}
-
</script>
-
-
<style lang="scss" scoped>
-
</style>
子组件:
-
<template>
-
<div v-if="show">
-
<button @click="closeShow"></button>
-
</div>
-
</template>
-
<script>
-
-
export default {
-
data(){
-
return{
-
}
-
},
-
props: ["show"],
-
methods: {
-
closeShow() {
-
this.$emit("update:show",false);
-
}
-
},
-
}
-
</script>
-
<style lang="scss" scoped>
-
</style>
子组件通过this.$emit("update:show",false); 可以直接将父组件传过来的show值改变,从而达到显示隐藏的目的。
方法二 使用v-model
父组件
-
<template>
-
<div id="demo">
-
<test-model v-model="show"></test-model>
-
-
</div>
-
</template>
-
<script>
-
import testModel from 'src/components/testModel'
-
export default {
-
data(){
-
return{
-
show: false
-
}
-
},
-
components: {
-
testModel,
-
}
-
}
-
</script>
-
-
<style lang="scss" scoped>
-
</style>
子组件
-
<template>
-
<div v-if="value">
-
<button @click="closeShow"></button>
-
</div>
-
</template>
-
<script>
-
-
export default {
-
data(){
-
return{
-
}
-
},
-
props: ["value"],
-
model: {
-
prop: 'value',
-
event: 'balabala'
-
},
-
methods: {
-
changeShow() {
-
this.$emit("balabala",false);
-
}
-
},
-
}
-
</script>
-
<style lang="scss" scoped>
-
</style>
官方文档里有写,一个组件上的 v-model
默认会利用名为 value
的 prop 和名为 input
的事件,但是像单选框、复选框等类型的输入控件可能会将 value
特性用于不同的目的。model
选项可以用来避免这样的冲突,所以上面的子组件里,我们用balabala来替换掉了原本的input事件,所以在$emit的时候,里面的事件名应为balabala,否则默认为input.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南