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 相关文章推荐
在chrome中window.onload事件的一些问题
Mar 01 Javascript
js 判断checkbox是否选中的实现代码
Nov 23 Javascript
用js实现trim()的解决办法
Apr 16 Javascript
jquery 快速回到页首的方法
Dec 05 Javascript
JS比较2个日期间隔的示例代码
Apr 15 Javascript
JavaScript事件委托实例分析
May 26 Javascript
Js制作点击输入框时默认文字消失的效果
Sep 05 Javascript
js下将金额数字每三位一逗号分隔
Feb 19 Javascript
基于JavaScript定位当前的地理位置
Apr 11 Javascript
Vue中render方法的使用详解
Jan 26 Javascript
详解用Node.js写一个简单的命令行工具
Mar 01 Javascript
JavaScript快速调试的两个技巧
Nov 04 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
细谈php中SQL注入攻击与XSS攻击
2012/06/10 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
简单实现js倒计时功能
2017/02/13 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
js module大战
2019/04/19 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python3字符串学习教程
2015/08/20 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
Python网络编程详解
2017/10/31 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
Python多版本开发环境管理工具介绍
2019/07/03 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
英国知名奢侈品包包品牌:Milli Millu
2016/12/22 全球购物
servlet面试题
2012/08/20 面试题
酒店秘书求职信范文
2014/02/17 职场文书