美文网首页
vue组件嵌套(模态框)

vue组件嵌套(模态框)

作者: Jc_wo | 来源:发表于2019-10-24 11:43 被阅读0次
  • 在vue中父组件向自子组件传递props;
  • 子组件向父组件传递属性是用$emit(发布订阅);
实例基本逻辑:

点击页面上一个按钮,弹出弹框,点击弹框上关闭按钮,隐藏弹框

<style>
    .mark{ width: 100%; height: 100%; position: fixed; top: 0; left: 0; background: rgba(0,0,0,.4); }
    .modal{ width: 300px; height: 200px; background: #ffffff; padding: 10px; position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%); }
</style>

需要对“打开弹窗”按钮定义一个变量命名为state,当state=true时弹出;
弹框弹出后,在子组件内,需要$emit一个关闭事件把state变成false从而关闭弹框

<body>

<div id="app">
    <button @click="state=true">打开弹窗</button>
    <mymodal :show="state" @close="()=>state=false"></mymodal>
</div>

<template id="temp1">
    <div class="mark" v-if="show">
        <div class="modal">
            <button @click="modalClose">关闭弹窗</button>
        </div>
    </div>
</template>

</body>

<script type="text/javascript">
    let mymodal = {
        props:['show'],
        template:'#temp1',
        methods:{
            modalClose(){
                this.$emit('close')
            }
        }
    };
    let app = new Vue({
        el: "#app",
        data: {
            state:false
        },
        components: {
            mymodal
        }
    });
</script>

相关文章

网友评论

      本文标题:vue组件嵌套(模态框)

      本文链接:https://www.haomeiwen.com/subject/flprvctx.html