1.自定义 modal

Modal.vue

<!-- 模态框 -->
<template>
<div class="modal-mask" v-show="value" transition="modal">
<div class="modal-wrapper">
<div class="modal-container">
<!-- 头部 -->
<div class="modal-header">
<slot name="header"></slot>
</div>
<!-- 内容部分 -->
<div class="modal-body">
<span>起床</span><mt-switch></mt-switch>
</div> <div class="modal-body">
<span>吃饭</span><mt-switch></mt-switch>
</div> <div class="modal-body">
<span>集合</span><mt-switch></mt-switch>
</div> <div class="modal-body">
<span>加工车间</span><mt-switch></mt-switch>
</div>
<!-- 底部 -->
<div class="modal-footer">
<mt-button type="danger" @click="cancel">取消</mt-button> <mt-button type="primary" @click="confirm">确定</mt-button>
</div>
</div>
</div>
</div>
</template> <script>
export default {
props: {
show: {
type: Boolean,
default: false
}
},
data(){
return{
value: false
}
},
mounted(){
this.value = this.show;
},
// 监听show数值的变化
watch:{
show:{
handler:function(val,oldval){
this.value = val;
}
}
},
methods:{
cancel(){
this.value = false;
// 向父组件传值
this.$emit('listenToChildEvent',this.value);
},
confirm(){
this.value = false;
// 向父组件传值
this.$emit('listenToChildEvent',this.value);
}
}
}
</script> <style lang="less" scoped>
.modal-mask {
position: fixed;
z-index: 9998;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, .5);
display: table;
transition: opacity .3s ease;
} .modal-wrapper {
display: table-cell;
vertical-align: middle;
} .modal-container {
width: 70%;
margin: 0px auto;
padding: 20px 30px;
background-color: #fff;
border-radius: 2px;
box-shadow: 0 2px 8px rgba(0, 0, 0, .33);
transition: all .3s ease;
font-family: Helvetica, Arial, sans-serif;
} .modal-header h3 {
margin-top: 0;
color: #42b983;
} .modal-body {
margin: 20px 0;
border-bottom: 1px solid #ddd;
span{
display: inline-block;
height: 40px;
line-height: 40px;
width: 60%;
vertical-align: middle;
}
label{
width: 30%;
display: inline-block;
vertical-align: middle;
}
} .modal-footer{
text-align: center;
} .modal-default-button {
float: right;
} .modal-enter, .modal-leave {
opacity: 0;
} .modal-enter .modal-container,
.modal-leave .modal-container {
-webkit-transform: scale(1.1);
transform: scale(1.1);
}
</style>

解释:

(1)通过 watch 监听 子组件的数据变化

(2)通过 $emit 子组件 向 父组件 传值

2.父组件 调用

father.vue

<template>
<div>
<button @click="showType"></button>
<!-- 模态框 -->
<m-modal :show="showModal" v-on:listenToChildEvent="setModal">
<h3 slot="header">类型选择</h3>
</m-modal>
</div>
</template> <script>
// 引入 模态框组件
import mModal from '../../components/Modal' export default {
components: {
mModal
},
data(){
return{
// 默认值
showModal:false
}
},
methods: {
// 点击按钮
showType(){
this.showModal = true;
},
// 接收子组件的传值,并更改父组件的数据
setModal(data){
this.showModal = data;
}
}
}
</script> <style lang="less" scoped> </style>

解释:

(1)通过  :show="showModal"  父组件 向 子组件 传值

(2)通过  v-on:listenToChildEvent="setModal"  父组件 接收 子组件 的值

3.效果图

vue2.X 自定义 模态框 modal的更多相关文章

  1. bootstrap模态框modal使用remote第二次加载显示相同内容解决办法

    bootstrap模态框modal使用remote动态加载内容,第二次加载显示相同内容解决办法 bootstrap的modal中,使用remote可以动态加载页面到modal-body中,并弹窗显示 ...

  2. Bootstrap(v3.2.0)模态框(modal)垂直居中

    Bootstrap(v3.2.0)模态框(modal)垂直居中方法: 在bootstrap.js文件900行后面添加如下代码,便可以实现垂直居中. that.$element.children().e ...

  3. 模态框 modal data-toggle data-target

    模态框 modal data-toggle data-target   1. Data-*属性 模态框(modal) 触发事件(data-toggle) 触发对象data-target(ID 或类) ...

  4. Bootstrap历练实例:模态框(Modal)插件

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,其目的是显示来自一个单独源的内容,可以在不离开父窗体的情况下进行一些交互,子窗体提供一些交互或信息. <!DOCTYPE html>&l ...

  5. Bootstrap3模态框Modal垂直居中样式

    1,Bootstrap 模态框插件Bootbox垂直居中样式: <!DOCTYPE html> <html lang="en"> <head> ...

  6. 黄聪:bootstrap中模态框modal在苹果手机上会失效

    bootstrap中模态框在苹果手机上会失效 可将代码修改为<a  data-toggle="modal" data-target="#wrap" hre ...

  7. 模态框MODAL的一些事件捕捉

    下表列出了模态框中要用到事件.这些事件可在函数中当钩子使用. 事件 描述 实例 show.bs.modal 在调用 show 方法后触发. $('#identifier').on('show.bs.m ...

  8. Bootstrap使用模态框modal实现表单提交弹出框

    Bootstrap 模态框(Modal)插件 模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等.如果 ...

  9. Bootstrap多层模态框modal嵌套问题

    一.问题 在项目里忽然新加了一个需求,在原本弹出的模态框里,点击模态框里面的按钮再弹出一个模态框,出来另个模态框来展示详细信息.此时就存在两个模态框在这个需求没加之前有一个弹出的模态框也是需要继续点击 ...

随机推荐

  1. MySql数据库 - 2.启动与关闭

    MySql服务的启动: 右键计算机 - 管理 - 服务和应用程序 - 服务 - 右键 MySQL80 可以启动/停止MySQL(也可以点击属性 改变启动类型:手动/自动). 自动启动状态下,每次打开计 ...

  2. MessageBox:弹出窗口

    Ext.onReady(function () { Ext.MessageBox.alert("提示信息!","Hello World!"); }); Ext, ...

  3. 使用CoreLocation进行定位(Swift版)

    在应用开发中,很多情况需要我们获取到当前的位置和高度信息,方便搜索周边,查看周边相同应用等,一切与定位有关的都得使用CoreLocation库,而且,系统是不允许第三发定位的,当然可以使用第三方对其封 ...

  4. [SDOI2011][bzoj2286] 消耗战 [虚树+dp]

    题面: 传送门 思路: 看到所有询问中的点数总和是十万级别的,就想到用虚树~\(≧▽≦)/~啦 首先,树形dp应该是很明显可以看出来的: 设dp[u]表示以u为根的子树(不包括u)中的宝藏岛全部切断的 ...

  5. vue2+nodejs+mongodb搭建移动端网站

    从零开始一步步搭建移动端网站,持续更新,github代码如下,因为放了视频文件,下载可能有点慢 https://github.com/lanleilin/myHomepage 前端采用Vue2+vue ...

  6. webpack 样式模块打包深入学习

    1. style-loader css-loader sass-loader 分别的作用 style-loader: 将所有的样式嵌入到dom的style属性当中. css-loader: 将css当 ...

  7. webpack最佳入门实践系列(1)

    1.webpack简介 webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler).它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源 1 ...

  8. javascript草稿

    原文发布时间为:2011-06-01 -- 来源于本人的百度文章 [由搬家工具导入]   @MyHelper.Script("jquery-1.6.1.min.js", Url)  ...

  9. Jquery : 上下滚动--单行 批量多行 文字图片翻屏【转】

    原文发布时间为:2010-02-01 -- 来源于本人的百度文章 [由搬家工具导入] 注:如果和左右滚动一起使用,则会出现冲突 一单行滚动(ad:http://www.gz138.com) <! ...

  10. C#设计模式视频教程(不知道讲的好不好,刚刚看到)

    原文发布时间为:2008-12-08 -- 来源于本人的百度文章 [由搬家工具导入] http://u.youku.com/user_video/uid_happyboy27.html 优酷网。。