定义模态框:合理使用插槽

model.vue

<!-- 模态弹窗 -->
<template>
<div class="self-modal" v-show='showModal' @click="cancelClick" v-bind:style="styleObj" @touchmove.stop.prevent>
<!-- 自定义内容 -->
<slot></slot>
</div>
</template>
<script>
export default {
name: 'selfModal',
data () {
return {
showModal: false
}
},
props: {
styleObj: { // 用于承接样式类
type: Object,
default: function () {
return {
position: 'fixed',
bottom: 0,
top: 0,
left: 0,
width: '100%',
background: 'rgba(113,111,111,0.5)'
}
}
}
},
methods: {
// 确定
sureClick () {
this.showModal = true
return new Promise(function (resolve) {
resolve('sure')
}, function (reject) {})
},
// 取消
cancelClick () {
this.showModal = false
return new Promise(function (resolve) {
resolve('cancel')
}, function (reject) {})
}
}
}
</script>
<style scoped lang='scss'>
.self-modal{
z-index: 3000;
}
</style>

正确的使用方式:

import selfModal from '@/base/selfModal/modal'

<selfModal ref="incomeSelect" :styleObj="styleObj">
<div class="career-content" @click.prevent.stop>
<div class="mark-title">
请选择年收入
</div>
<div class="mark-wrapper" @click.stop="getIncome('1')">
<p class="nav-mark no-sub-mark">小于10万</p>
</div>
<div class="mark-wrapper" @click.stop="getIncome('2')">
<p class="nav-mark no-sub-mark">10万-30万</p>
</div>
<div class="mark-wrapper " @click.stop="getIncome('3')">
<p class="nav-mark no-sub-mark">大于30万</p>
</div>
<div class="mark-wrapper no-border-bottom">
<p class="btn-mark" @click.stop="getIncome()">取消</p>
</div>
</div>
</selfModal>
 
data () {
styleObj: {
position: 'fixed',
bottom: 0,
top: 0,
left: 0,
background: 'rgba(113, 111, 111, 0.5)',
width: '100%'
},
}
methods () {
  

selectIncome () {
  this.$refs.incomeSelect.showModal = true
}

使用插槽,实现弹框内容自定义,样式自定义,  

vue2.0实现一个模态弹框,内容自定义(使用slot)的更多相关文章

  1. 简单实现弹出弹框页面背景半透明灰,弹框内容可滚动原页面内容不可滚动的效果(JQuery)

    弹出弹框 效果展示 实现原理 html结构比较简单,即: <div>遮罩层 <div>弹框</div> </div> 先写覆盖显示窗口的遮罩层div.b ...

  2. 基于vue2.0的一个豆瓣电影App

    1.搭建项目框架 使用vue-cli 没安装的需要先安装 npm intall -g vue-cli 使用vue-cli生成项目框架 vue init webpack-simple vue-movie ...

  3. vue2.0中ckeckbox(复选框)的使用心得,及对click事件和change的理解

    最近在公司项目中使用vue2.0做开发,在使用checkbox时遇到了一些问题,首先我们先了解一下需求. 如上如所示,在上方复选框被点击时,更改下方p标签的文本内容为:复选框已被选中.并将p标签文字颜 ...

  4. jquery EsayUi 里一个小弹框

    网站后台大多的数据展示就都用和此插件有着密切的关系: 来用一下这个小弹框吧: 一个Html里面的代码 <link rel='stylesheet' type='text/css' href='c ...

  5. Vue1.x 到Vue2.0的一个变化

    小弟初来乍到,写的不好的地方还望指正.谢谢各位! 废话不多说  进入正题: Vue1.x到2.0的一个变化 1. 在每个组件模板,不在支持片段代码  组件中模板: 之前:     <templa ...

  6. layer插件学习——弹框(自定义页)

    本文是自己整理的关于layer插件的弹框样式结果 介绍: 官方介绍:layer至今仍作为layui的代表作,受众广泛并非偶然,而是这五年多的坚持,不断完善和维护.不断建设和提升社区服务,使得猿们纷纷自 ...

  7. html、css和js原生写一个模态弹出框,顺便解决父元素半透明子元素不透明效果

    模态框: html部分: <!-- 按钮 --> <button id="box" onclick="pop_box()">弹出框< ...

  8. 分享一个Web弹框类

    using System; using System.Text; namespace Core { /// <summary> /// MessageBox 的摘要说明. /// < ...

  9. 基于vue2.0的一个系统

    前言 这是一个用vue做的单页面管理系统,这里只是介绍架子搭建思路 前端架构 沿用Vue全家桶系列开发,主要技术栈:vue2.x+vue-router+vuex+element-ui1.x+axios ...

随机推荐

  1. centos7下SVN服务器如何搭建

    Centos7 搭建svn服务器 linux(centos)下SVN服务器如何搭建?说到SVN服务器,想必大家都知道,可以是在LINUX下如何搭建SVN服务器呢?那么今天给大家分享一下linux(ce ...

  2. API设计原则(觉得太合适,转发做记录)

    API设计原则 对于云计算系统,系统API实际上处于系统设计的统领地位,正如本文前面所说,K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作,理解掌握 ...

  3. 现在 做java 构架(RabbitMQ redis mysql )之类的

    现在 做java 构架(RabbitMQ redis mysql )之类的

  4. 一起动手打造个人娱乐级linux

    我们使用电脑,一直以来用的都是windows,但是对于像我这种爱折腾的人来说,尝试使用linux系统应该是一种不错的体验.说到linux,许多人可能都没听过,或者知道的人对它印象是这样的: 然而,li ...

  5. shell 脚本sed替换文件中某个字符串

    有些大文件,特别的大.有几百兆,甚至更大. 用文本编辑器打开十分的费劲,电脑都卡死了. 想替换其中的字符串,很麻烦. 这个时候有了shell,简直强大到爆炸! # du -h user.sql 304 ...

  6. Bert学习资料

    首先是Bert的论文和 attention is all you need的论文 然后是:将nlp预训练 迁移学习的发展从word2vec 到elmo bert https://mp.weixin.q ...

  7. ✅问题:Rails.ajax自定义请求

    chatroom.coffee中的js代码: document.addEventListener 'turbolinks:load', -> document.getElementById(&q ...

  8. 开发集成环境Devilbox安装

    一.Devilbox概述 devilbox是一款现代化且高度可定制的开发环境集成,基于docker和docker-compose,支持所有主要平台(win & linux). 它不限制项目的数 ...

  9. MyBatis案例&增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  10. 数论练习(6)——hdu A/B(逆元gcd)

    A/B Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...