Vue弹窗的两种实现方式实例详解
短信预约 -IT技能 免费直播动态提醒
方法一 使用.sync修饰符
element就是使用的这种方式,实现方式如下:
父组件:
<template>
<div id="demo">
<test-model :show.sync="showFlag"></test-model>
</div>
</template>
<script>
import testModel from 'class="lazy" data-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 'class="lazy" data-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.
到此这篇关于Vue弹窗的两种实现方式的文章就介绍到这了,更多相关vue弹窗实现内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341