微信小程序自定义授权弹框

最近微信获取用户信息的接口有调整,就是这货:wx.getUserInfo(OBJECT),文档描述如下:

此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type="getUserInfo"></button> 引导用户主动进行授权操作
1.当用户未授权过,调用该接口将直接报错
2.当用户授权过,可以使用该接口获取用户信息

解决方案

无缘无故在页面上多了一个按钮,只是为了引导用户授权,加在哪里都会觉得和页面内容格格不入。
那就弹一个框提示吧,虽然连续两个弹框也很怪,但是个人觉得比页面多一个按钮好一点。

微信自己定义的弹框交互并不适合授权这个场景,那就想到自定义一个弹框组件来解决。

实现

新建 components 目录文件如下:
image

dialog.json 文件内容:

{
"component": true, // 自定义组件必须先声明
"usingComponents": {}
}
dialog.js 文件内容:

Component({
options: {
multipleSlots: true // 在组件定义时的选项中启用多slot支持
},
/**
* 组件的属性列表
*/
properties: {
// 弹窗标题
title: {
type: String,
value: '标题' // 默认值
},
// 弹窗内容
content :{
type : String ,
value : '弹窗内容'
},

// 弹窗确认按钮文字
confirmText :{
type : String ,
value : '确定'
}
},

/**
* 组件内私有数据
*/
data: {
// 弹窗显示控制
isShow:false
},

/**
* 组件的公有方法列表
*/
methods: {

//隐藏弹框
hideDialog(){
this.setData({
isShow: !this.data.isShow
})
},
//展示弹框
showDialog(){
this.setData({
isShow: !this.data.isShow
})
},
/**
* triggerEvent 组件之间通信
*/
confirmEvent(){
this.triggerEvent("confirmEvent");
},

bindGetUserInfo(){
this.triggerEvent("bindGetUserInfo");
}

}
})
dialog.wxml 文件内容:

<view class='dialog-container' hidden="{{!isShow}}">
<view class='dialog-mask'></view>
<view class='dialog-info'>
<view class='dialog-title'>{{ title }}</view>
<view class='dialog-content'>{{ content }}</view>
<view class='dialog-footer'>
<button class='dialog-btn' open-type="getUserInfo" bindgetuserinfo='bindGetUserInfo' catchtap='confirmEvent'>{{ confirmText }}</button>
</view>
</view>
</view>
dialog.wxss 文件内容:

.dialog-mask{
position: fixed;
z-index: 1000;
top: 0;
right: 0;
left: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.3);
}
.dialog-info{
position: fixed;
z-index: 5000;
width: 80%;
max-width: 600rpx;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
background-color: #FFFFFF;
text-align: center;
border-radius: 3px;
overflow: hidden;
}
.dialog-title{
font-size: 36rpx;
padding: 30rpx 30rpx 10rpx;
}
.dialog-content{
padding: 10rpx 30rpx 20rpx;
min-height: 80rpx;
font-size: 32rpx;
line-height: 1.3;
word-wrap: break-word;
word-break: break-all;
color: #999999;
}
.dialog-footer{
display: flex;
align-items: center;
position: relative;
line-height: 90rpx;
font-size: 34rpx;
}
.dialog-btn{
display: block;
-webkit-flex: 1;
flex: 1;
position: relative;
color: #3CC51F;
}
在首页或者我的页面进行授权检测:
首先还是要在 json 文件进行声明
index.json:

{
"usingComponents": {
"dialog": "/components/dialog/dialog"
}
}

index.wxml:

<dialog id='dialog'
title='登录提示'
content='小程序需要您的授权才能提供更好的服务哦'
confirmText='知道了'
bind:confirmEvent='confirmEvent'
bind:bindGetUserInfo='bindGetUserInfo'>
</dialog>
index.js:

onReady: function () {
//获得dialog组件
this.dialog = this.selectComponent("#dialog");
},

showDialog: function(){
this.dialog.showDialog();
},

confirmEvent: function(){
this.dialog.hideDialog();
},

bindGetUserInfo: function() {
// 用户点击授权后,这里可以做一些登陆操作
this.login();
},

转载于:https://www.cnblogs.com/mapsxy/p/10375131.html

微信小程序自定义授权弹框相关推荐

  1. 微信小程序自定义picker弹框组件

    要有遥不可及的梦想,也要有脚踏实地的本事.----------- Grapefruit.Banuit Gang(香柚帮) 柚子写项目遇到了一个问题,就是微信小程序官方文档上面的弹框组件picker,它 ...

  2. html自定义js程序,JS中微信小程序自定义底部弹出框

    实现微信小程序底部弹出框效果,代码分为html,css和js两部分,具体代码详情大家参考下本文. html CSS .commodity_screen { width: 100%; height: 1 ...

  3. 微信小程序之底部弹框预约插件

    代码地址如下: http://www.demodashi.com/demo/13982.html 一.前期准备工作: 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq. ...

  4. 微信小程序——自定义下拉框

    微信小程序本身并没有自带的下拉框组件,我们可以通过view标签自定义一个下拉框.(仅供参考) 目录 文件目录 实现效果 实现逻辑 设置数据 设置默认选项 实现弹出下拉框 提供选项值 设置所选值 源码 ...

  5. 微信小程序 -- 自定义底部弹出框(带动画--滑入滑出)

    实现这么一个功能,点击选项进行选择,效果是从底部弹出选项框(带滑出动画),选择了某项或者点击其他地方,隐藏(带滑出动画).效果图如下: 可适用于任何场景,如普通选项(如图)或者类似商城小程序选择商品属 ...

  6. 微信小程序 自定义showmodal 弹出框

    最近一直忙着修改bug 增加新功能,好久没总结了,也不知道该总结啥,先写一个自定义showmodal框吧 废话少说直接上代码 wxml部分 <view class="mask" ...

  7. 微信小程序之model弹框

    小程序model表达形式一般有两种: 1. 第一种: wxml: <button type="primary" bindtap="click">按钮 ...

  8. 微信小程序自定义复选框

    微信官方给的复选框太丑,想要样式多样需要我们自己定义 先来张效果图 wxml循环生成选框,从js里取数据,根据checked的值,改变标签的样式类 <view class="two { ...

  9. uniapp微信小程序的各种弹框提示(轻提示)

    您直接复制粘贴即可使用不需要做特殊的处理. 如您满意请给莫成尘点个Fabulous 1: 纯文字提示框 uni.showToast({title: '只有文字弹窗',icon: 'none', //如 ...

最新文章

  1. 如何确认11.2 RAC Grid Infrastructure的时区
  2. linux下载哪个python版本-Linux下升级安装Python-3.6.2版本
  3. 高品质互动在线课堂:前端开发优化实践
  4. 作者:唐碧霞(1984-),女,中国科学院北京基因组研究所生命与健康大数据中心工程师...
  5. codevs3732==洛谷 解方程P2312 解方程
  6. Spring源代码解析
  7. C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能...
  8. 响应式图片srcset全新释义sizes属性w描述符
  9. gradle下载地址
  10. [-Flutter 自组篇-] 圆形进度条
  11. 知识分享之Golang——在Golang中unicode码和中文的互相转换函数
  12. 维吉尼亚密码(Vigenere)
  13. bundle adjustment 详解
  14. ​stp文件转obj
  15. 决策树CART、ID3、C4.5原理梳理
  16. Zigbee学习(一)架构及入网
  17. 大学计算机实验图灵机模型与计算机硬件,实验1图灵机模型与计算机硬件系统虚拟拆装实验报告.pdf...
  18. 不用的MacBook这样处理比较好
  19. 《做自己人生的CEO》总结
  20. 基于Python的JS逆向和AST抽象语法树

热门文章

  1. libevent中指定使用哪种方法如select
  2. 【CyberSecurityLearning 45】PHP基础+变量、运算符、流程控制语句
  3. java中删除字符串的头尾空白符。
  4. python基础——字典
  5. 计算1+2+……+N的和。
  6. dokuwiki 部署笔记
  7. centos系统中kaptcha没有按指定的字体显示验证码问题解决
  8. 基于TCP协议的通信模型
  9. LeetCode-有效的字母异位词
  10. EOS声称的每秒百万级的交易速度靠谱么?