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 相关文章推荐
javascript之水平横向滚动歌词同步的应用
May 07 Javascript
js prototype截取字符串函数
Apr 01 Javascript
读jQuery之十三 添加事件和删除事件的核心方法
Aug 23 Javascript
5秒后跳转到另一个页面的js代码
Oct 12 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
Dec 16 Javascript
javascript 自定义回调函数示例代码
Sep 26 Javascript
jQuery序列化表单成对象的简单实现
Nov 29 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
小程序点赞收藏功能的实现代码示例
Sep 07 Javascript
基于layui内置模块(element常用元素的操作)
Sep 20 Javascript
微信小程序如何实现五星评价功能
Oct 15 Javascript
Vue + ts实现轮播插件的示例
Nov 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
PHP 闭包详解及实例代码
2016/09/28 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
详解JS函数重载
2014/12/04 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
在Python中使用dict和set方法的教程
2015/04/27 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Python整数对象实现原理详解
2019/07/01 Python
python元组的概念知识点
2019/11/19 Python
python实现图片插入文字
2019/11/26 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
python实现逻辑回归的示例
2020/10/09 Python
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
软件售后服务方案
2014/05/29 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
老兵退伍标语
2014/10/07 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
学校安全管理制度
2015/08/06 职场文书
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python