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. swarm 集群管理

    1.创建服务 docker service create --replicas 1 --name hello busybox ping baiud.com 2.显示服务详细信息 3.扩展服务数量 4. ...

  2. django学习——通过get_FOO_display 查找模型中的choice值

    在django的models.py 中,我们定义了一些choices的元组,类似一些字典值,一般都是下拉框或者单多选框,例如 0对应男 1对应女等. class Area(models.Model): ...

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

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

  4. 最近发的一些csdn下载资源

    原文发布时间为:2009-11-02 -- 来源于本人的百度文章 [由搬家工具导入] http://wjwu1988.download.csdn.net/treeview的datasource类    ...

  5. repeater做成gridview【更新删除编辑等】

    原文发布时间为:2009-06-14 -- 来源于本人的百度文章 [由搬家工具导入] 不多说,不会说。。看我做的范例。。。 http://download.csdn.net/source/138556 ...

  6. 【SQL Server】修改DB逻辑文件名称

    步骤一:查询当前DB逻辑文件名称(主逻辑文件.日志逻辑文件) ; 步骤二:步骤二改变(还原)DB逻辑文件名称 RESTORE DATABASE AW831 FROM DISK='D:\AW831.DA ...

  7. nginx报404的可能错误

    1.转移地址写错,如root E:software_setup\ftpfile,而你实际的目录地址(比如test.jpg)在ftpfile文件夹里面的img文件夹下,如果直接找ftpfile\test ...

  8. TDictionary字典 记录 的赋值。

    type TRen = record age: Integer; //把name定义成结构的属性. private Fname: string; procedure Setname(const Val ...

  9. 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法

    在 GTK+/GNOME 3 环境下采用默认的 Adwaita 主题时,Java Swing 程序如果使用本地 GTK+ 主题会出现菜单无边框的 bug,这个问题也可能在其他常用的 GTK+ 主题中出 ...

  10. MySQL自增锁模式innodb_autoinc_lock_mode参数理解调优

    前段时间某数据表运行过程中,出现自增字段突然跳跃式增长的问题,潜心研究发现,问题导致原因可能是因为并发写入导致 于是通过各种途径查阅是因为innodb_autoinc_lock_mode参数设置的不同 ...