弹窗组件封装: 原生js封装toast 、二次封装element $confirm

6 篇文章 0 订阅

设计非要把弹窗换个样式,确认取消按钮位置也跟原组件不一样,为了使用方便,就二次封装一下。。

  /**
   * 重构confirm弹窗样式
   * @param {*} _this 页面this
   * @param {*} title 内容
   * @param {*} type 图标class  warning\success\danger
   */
  static qyConfirm(_this, title, type) {
    // 显示dom
    let msg = `<div class="qyConfrim-cont">
                  <i class="${type}"></i>
                  <span>${title}</span>
                </div>`
    // 构建confirm
    return new Promise((resolve, reject) => {
      _this.$confirm(msg, '', {
        confirmButtonText: '取消',
        cancelButtonText: '确定',
        confirmButtonClass: 'confrimBtn',
        cancelButtonClass: 'cancelBtn',
        dangerouslyUseHTMLString: true,
        showClose: false,
        closeOnClickModal: false,
        customClass: 'qyConfrim'
      }).then(() => {
        // 由于换了原组件的确认取消位置,所以反向resolve
      }).catch(() => {
        resolve()
      })
    })
  }


// 封装后使用方式
this.tool.qyConfirm(this, '是否确认删除?', 'warning').then(function () {
   // do something
})

// 原使用方式
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          
        }).catch(() => {
});

由于引用toast一直用不起。。。。就造了个轮子。。。 

  /**
   * 自定义toast弹窗 
   * @param {*} value
   * @param {*} type text\fail\success 默认不传使用 text
   * @param {*} duration 持续时间
   */
  static _toast (value,type,duration=3000){
    // 唯一id标识
    let uniqueIds = 'poemTast_' +  parseInt(Math.random() * 1000)
    // 构建dom
    let htm = `
      <div id="${uniqueIds}" class="poem_toast ${['fail','success'].includes(type) ? '' : 'text'}">
        ${type === 'fail' ? '<i class="van-icon van-icon-fail van-toast__icon"></i>' : ''}
        ${type === 'success' ? '<i class="van-icon van-icon-success van-toast__icon"></i>' : ''}
        <span>${value}</span>
      </div>
    `
    // 向#app内添加元素
    let appEL = document.getElementById('app')
    appEL.insertAdjacentHTML('beforeEnd',htm)
    // 定时清除
    setTimeout(() => {
      let delEl = document.getElementById(uniqueIds)
      appEL.removeChild(delEl)
    }, duration);
  }





// 使用方式
this.tool._toast('创建成功')  //--- 只显示文本
this.tool._toast('创建成功','success',5000)  //---显示成功提示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值