vue使用weui.js插件dialog和actionsheet、confirm、picker,页面销毁时自动隐藏

一、问题背景:

在项目中遇到问题,使用weui.js的dialog 和 actionsheet 插件,使用手机的物理退回键或者网页的回退键,提示框不会自动隐藏。

二、解决方法:

针对Dialog、confirm:

添加全局变量weuijsDialog,当页面关闭时,自动隐藏。
在全局install.js文件中

export default {
   Vue.mixin({
     data() {
          return {
            weuijsDialog:null, //添加全局变量weuijsDialog
          }
        },

   beforeDestroy(){
          if(this.weuijsDialog){
            this.weuijsDialog.hide();
            this.weuijsDialog = null;
          }
  } )
}

针对actionsheet、picker,

不能使用全局定义的方法,要通过dom定位的方法,使组件出现及隐藏;
在mixins文件中添加方法

//value指的是 picker 或者 actionsheet
// state 指的是 visible 或者 hidden
    mixin_weuijs_picker_actionsheet(value,state){
      let mask = document.getElementsByClassName('weui-mask')[0];
      let picker= document.getElementsByClassName('weui-'+ value)[0];
      mask && (mask.style.visibility = state); 
      picker && (picker.style.visibility = state);
    },

三、具体使用时

针对Dialog、confirm:

//让全局变量 this.weuijsDialog 等于 this.$weuijs.alert
 this.weuijsDialog = this.$weuijs.alert(
              '<img width="80" src="./static/img/dyqy.png">' +
              '<br/>' +
              '<h3 class="fs18 color_333">到院取药</h3>' +
              '<p class="fs14 mt30 color_333">您可以携带相关就医证件,前往衢州市人民医院药房取药。或者您也可以选择“送药到家”</p>', {
                isAndroid: false,
                buttons: [
                  {label: '我知道了', type: 'primary'}
                ]
              })

针对actionsheet、picker:

  export default {
      handler(type) {
        let {form} = this;
        switch (type) {
          case 'time':
            this.$weuijs.datePicker({
              defaultValue: form.medicalTime.split('-'),
              onConfirm: (res) => {
                this.$set(this.form, 'medicalTime', res.map(r => r.value).map((r, i) => {
                  if (i == 1) return r < 10 ? `0${r}` : r;
                  else return r;
                }).join('-'));
              }
            });
//触发函数时将隐藏得picker显示出来
            this.mixin_weuijs_picker_actionsheet('picker','visible');
            break;
        }
      }
    },
//页面销毁时自动隐藏
    beforeDestroy(){
      this.mixin_weuijs_picker_actionsheet('picker','hidden');
    },
  }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,463评论 3赞 119
  • 如果说, 爱情里,甜蜜的味道, 需要金钱来搅拌。 那我会告诉我的另一半: 你不必慌张, 因为我的爱情需要是平淡! ...
    粉色的桃林阅读 648评论 6赞 29
  • 晚上聚餐回到家里有点睡不着,看着大家喝酒以后的状态,看着吃饭时每个人不同的表现,真心觉得生活不易。看着那个喝多的他...
    格子灰的天空阅读 278评论 0赞 0
  • 眨眼睛的小星星[em]e327775[/em](原创歌曲) 音符写梦 2015-1-7 10:55 美丽的夜空中 ...
    如伊老师阅读 960评论 0赞 1

友情链接更多精彩内容