vue弹窗组件使用方法


Posted in Javascript onApril 28, 2018

本文实例为大家分享了vue弹窗组件的具体代码,供大家参考,具体内容如下

弹窗是一个项目必备的复用利器,所以封装起来,保证项目ui一致,是很有必要的。学了一段时间vue,想想还是用vue写一下吧。用的很小白,但是会写出来了,说明我也有进步一丢丢了。继续加油….

代码贴图如下,样式比较丑,不要介意…

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>ys-vue-modal-component</title>
  <style>
    p,h4{
      margin:0;
    }
    .modal{
      width: 480px;
      background-color: #fff;
      border: 1px solid rgba(0, 0, 0, .3);
      border-radius: 6px;
      box-shadow: 0 4px 12px rgba(0, 0, 0, .5);
      margin: 50px;
    }
    .modal-header {
      color: #fff;
      background: cadetblue;
      border-radius: 6px 6px 0 0;
      padding: 15px;
      border-bottom: 1px solid #5e9fa1;
    }
    .modal-content div {
      padding: 15px 10px;
    }
    .modal-footer {
      padding: 15px;
      text-align: right;
      border-top: 1px solid #e5e5e5;
    }
    .btn {
      border: 1px solid #d1d1d1;
      border-radius: 3px;
      background-color: #f7f7f7;
      background: -webkit-gradient(linear, 0 0, 0 100%, from(#f7f7f7),
     to(#f2f2f2));
      background: -moz-gradient(linear, 0 0, 0 100%, from(#f7f7f7),
     to(#f2f2f2));
      background: -o-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#f2f2f2));
      background: -ms-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#f2f2f2));
      height: 28px;
      padding: 0 20px;
      cursor: pointer;
      line-height: 28px;
      display: inline-block;
      color: #666666;
      margin-right: 5px;
      outline: none;
    }
    .blue {
       border: 1px solid #5e9fa1;
      background-color: #5e9fa1;
      background: -webkit-gradient(linear, 0 0, 0 100%, from(#74c4c6),
     to(#5e9fa1));
      background: -moz-gradient(linear, 0 0, 0 100%, from(#74c4c6),
     to(#5e9fa1));
      background: -o-gradient(linear, 0 0, 0 100%, from(#74c4c6), to(#5e9fa1));
      background: -ms-gradient(linear, 0 0, 0 100%, from(#74c4c6), to(#5e9fa1));
      color: #FFFFFF;
    }    
  </style>
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
  <div id="app"> 
    <input type="button" class="btn blue" value="点击我,呼唤弹窗,再来一遍" v-if="isHide" @click="isHide=!isHide">
    <ys-modal-component 
       v-if="!isHide"
       modal-title="温馨提示" 
       ok-btn="确认购买" 
       cancel-btn="去意已决"
       @on-ok="ok"
       @on-cancel="cancel"
     >
      <div slot="modal-content">
        尊敬的用户,您购买的商品将于支付成功后3-7个工作日内发货,敬请周知。祝您购物愉快!
      </div>
    </ys-modal-component>
  </div>
  <script>
    /*
      props:
        modalTitle: 弹窗标题
        okBtn: 确认按钮
        cancelBtn: 取消按钮
        注意事项:传参时候使用烤串的书写方式xx-xxx
      slot:
        modal-content: 内容区域
        modal-footer: 页脚按钮区域
      methods: 
        okHandle: 触发确认on-ok自定义事件
        cancelHandle: 触发取消on-cancel自定义事件
     */
    Vue.component('ys-modal-component', {
      props: {
        modalTitle: {
          type: String,
          default: '标题区域'
        },
        okBtn: {
          type: String,
          default: '确认'
        },
        cancelBtn: {
          type: String,
          default: '取消'
        }
      },
      template: `
        <div class="modal">
          <div class="modal-header">
            <h4>{{ modalTitle }}</h4>
          </div>
          <div class="modal-content">
            <div>
              <slot name="modal-content">内容区域</slot>
            </div>
          </div>
          <div class="modal-footer">
              <input class="btn blue" type="button" v-model="okBtn" @click="okHandle" />
              <input class="btn" type="button" v-model="cancelBtn" @click="cancelHandle" />
          </div>
        </div>
      `,
      methods: {
        okHandle () {
          console.log("点击确定");
          this.$emit("on-ok"); 
        },
        cancelHandle () {
          console.log("点击取消");
          this.$emit("on-cancel");
        }
      }
    })


    new Vue({
      el: "#app",
      data: {
        isHide: false
      },
      methods: {
        ok () {
          alert("欢迎您购买本产品");
        },
        cancel () {
          this.isHide = !this.isHide;
        }
      }
    })
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
textContent在Firefox下与innerText等效的属性
May 12 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
Feb 23 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
Sep 29 Javascript
jQuery1.6 使用方法二
Nov 23 Javascript
Node.js中require的工作原理浅析
Jun 24 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
Feb 28 Javascript
jQuery往textarea中光标所在位置插入文本的方法
Jun 26 Javascript
深入分析javascript中console命令
Aug 14 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
Sep 17 Javascript
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
详解webpack4.x之搭建前端开发环境
Mar 28 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
Dec 10 Javascript
学习Vue组件实例
Apr 28 #Javascript
vue弹窗消息组件的使用方法
Sep 24 #Javascript
layui实现动态和静态分页
Apr 28 #Javascript
js实现二级菜单点击显示当前内容效果
Apr 28 #Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 #Javascript
vue组件实现弹出框点击显示隐藏效果
Oct 26 #Javascript
vue.extend实现alert模态框弹窗组件
Apr 28 #Javascript
You might like
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
php解析url的三个示例
2014/01/20 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
WAF的正确bypass
2017/01/05 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
图片按比例缩放函数
2006/06/26 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
python em算法的实现
2020/10/03 Python
Python jieba库分词模式实例用法
2021/01/13 Python
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
四年级下册教学反思
2014/02/01 职场文书
社会实践活动总结范文
2014/07/03 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
尊师重教演讲稿
2014/09/04 职场文书
运动会加油稿100字
2014/09/19 职场文书