一个全局模态框的样例代码
<template>
<div>
<div class="md-modal modal-msg md-modal-transition " v-bind:class="{'md-show':mdShow}">
<div class="md-modal-inner">
<div class="md-top">
<button class="md-close" @click="closeModal">Close</button>
</div>
<div class="md-content">
<div class="confirm-tips">
<slot name="message"></slot>
</div>
<div class="btn-wrap">
<slot name="btnGroup"></slot>
</div>
</div>
</div>
</div>
<div class="md-overlay" v-if="mdShow" @click="closeModal"></div>
</div>
</template>
<script>
export default {
props:["mdShow"],
data(){
return {
msg:'hello world'
}
},
methods:{
closeModal(){
this.$emit("close");
}
}
}
</script>
代码解释:
-
留有两个插槽,一个用于msg,即文本内容之类的,一个用于btn-group,即按钮组
-
父子组件通信部分
-
props 指的是向父组件获取数据,但是这是单向传递,即如果 mdShow 在子组件被改变,父组件中 mdShow 不会被改变
-
this.$emit("close"); 指的是子组件提醒父组件应该更新close绑定的属性了
<!-- 父组件中modal样例 -->
<Modal :mdShow = "modalConfirm" @close="closeModal">
<p slot="message">你确实要删除此条数据吗?</p>
<div slot="btnGroup" >
<a class="btn btn--m" href="javascript:;" @click="delCart">确认</a>
<a class="btn btn--m" href="javascript:;" @click="modalConfirm = false">关闭</a>
</div>
</Modal>
样例格式