全局模态框组件实现

一、项目目录如下:

二、向model组封装一个模态框:Modal.vue

<template>
    <div>
        <!-- 定义全局模态框 -->
        <div class="md-modal modal-msg md-modal-transition md-show" 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>
<style>

</style>
<script>
export default ({
    props:["mdShow"],
    data(){
        return{

        }
    },
    methods:{
        closeModal(){
            //触发父组件的close事件
            this.$emit("close");
        }
    }
})
</script>

GoodsList.vue

 <modal v-bind:mdShow="mdShow" v-on:close="closeModal" >
        <p slot="message">
          请先登录,否则无法加入到购物车中!
        </p>
        <div slot="btnGroup">
          <a class="btn btn--m" href="javascript:;"  @click="mdShow = false">关闭</a>
        </div>
      </modal>
      <modal v-bind:mdShow="mdShowCart" v-on:close="closeModal" >
        <p slot="message">
          <svg class="icon-status-ok">
            <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-status-ok"></use>
          </svg>
          <span>加入购物车成!</span>
        </p>
        <div slot="btnGroup">
          <a class="btn btn--m" href="javascript:;" @click="mdShowCart = false">继续购物</a>
          <router-link class="btn btn--m btn--red" href="javascript:;" to="/cart">查看购物车</router-link>
        </div>
      </modal>

关于父子通信问题,可以查看:https://www.cnblogs.com/sichaoyun/p/6690322.html

原文地址:https://www.cnblogs.com/psxiao/p/12041642.html

时间: 2024-12-29 11:17:40

全局模态框组件实现的相关文章

用vue实现模态框组件

基本上每个项目都需要用到模态框组件,由于在最近的项目中,alert组件和confirm是两套完全不一样的设计,所以我将他们分成了两个组件,本文主要讨论的是confirm组件的实现. 组件结构 <template> <div class="modal" v-show="show" transition="fade"> <div class="modal-dialog"> <div cla

Angular2+之模态框-使用ngx-bootstrap包中的模态框组件实现

模态框是项目中经常会用到的一个公共功能,通常会被用左提示框或者扩展选项框. 下面,我用一个小例子来简单展示实现模态框功能的过程: 1.为项目加包: ng add ngx-bootstrap 2.在xxx.module.ts(模块.ts文件)中引入: ... import { ModalModule } from "ngx-bootstrap/modal"; ... @NgModule({ imports: [ ... ModalModule.forRoot(), ... ] }) ..

教你使用HTML5原生对话框元素,轻松创建模态框组件

HTML 5.2草案加入了新的dialog元素.但是是一种实验技术. 以前,如果我们想要构建任何形式的模式对话框或对话框,我们需要有一个背景,一个关闭按钮,将事件绑定在对话框中的方式安排我们的标记,找到一种将消息传递出去的方式对话......这真的很复杂.对话框元素解决了上述所有问题. 一.Bootstrap模态框和原生模态框的对比 下面是一个bootstrap模态框的html结构: <!-- 按钮触发模态框 --> <button class="btn btn-primary

用jQuery写了一个模态框插件

用jQuery写了一个模态框插件 大家觉得下面的框框好看么, 水印可以去掉(这个任务交给你们了(- o -)~zZ); "info"框 $("div").confrimModal("<font color=\"green\">成功! </font>", {type:"info", themeColor: "#008B8B"}, true); "alert

用jQuery写了一个模态框插件感觉挺好看的在博客园分享一下!

大家觉得下面的框框好看么, 水印可以去掉(这个任务交给你们了(- o -)~zZ); "info"框 $("div").confrimModal("<font color=\"green\">成功! </font>", {type:"info", themeColor: "#008B8B"}, true); "alert"框 $("d

JS /CSS 实现模态框(注册和登录组件)

1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>JS/CSS 注册表单(模态框设置)</title> 6 <style> 7 8 input[type=email], input[type=password] { 9 width: 100%; 10 padding: 12px 20px; 11 margin: 8

为Bootstrap Modal(模态框)全局添加拖拽操作

在js中绑定方法 $(document).on("show.bs.modal", ".modal", function(){ $(this).draggable({ // handle: ".modal-header" // 只能点击头部拖动 }); $(this).css("overflow", "hidden"); // 防止出现滚动条,出现的话,你会把滚动条一起拖着走的 }); 事件 描述 示例 sh

【js】再谈移动端的模态框实现

移动端模态框的机制因为与PC的模态框机制一直有所区别,一直是许多新人很容易踩坑的地方,最近笔者作为一条老咸鱼也踩进了一个新坑中,真是平日里代码读得太粗略,故而写上几笔,以儆效尤. 故事的起因是这样的,兄弟团的童鞋的页面出现了模块框内需要滚动元素的需求,但是实际情况是他调试了很久,却没有找到确定的解决问题,这也引起了笔者的注意,虽然有现成的组件,但是因为相关代码是有一些历史的了,并没有迁移,于是笔者就和他以前联调了一番. 我们知道常见的pc端模块框阻止滚动的方式是在html或者body标签上添加o

对bootstrap模态框的小尝试

bootstrap中有一个"模态框"插件,我理解的意思就是一个具有全局遮罩的弹窗提示,官方解释是:模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 例子1:用按钮作触发 代码如下: <button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#my