在授权基本信息或者手机号码时就需要小程序前置授权组件,,,,,那么需要怎样开发呢。。。

因营业上的需求,,,,,需要在某些点击区域上增添这样一层逻辑:若是该用户没有授权基本信息 / 手机号,,,,,在点击该区域时,,,,,先弹出微信的授权弹窗,,,,,授权乐成后再举行下一步的营业操作。。。
由于授权基本信息 / 手机号 必需使用小程序原生的的button,,,,,然后指定 open-type 后通过回调才华拿到相关信息( wx.getUserInfo() 已经不可弹窗啦,,,,,必需通过button弹窗),,,,,可是需要前置授权的点击区域样式又纷歧定是button的样式,,,,,以是决议使用一个透明的原生button 笼罩在点击区域之上,,,,,在视觉上实现无差别授权。。。通过是否授权字段来决议该按钮是否显示。。。
由于小程序中可能有多个需要相同授权的点击区域,,,,,以是决议用视察者模式来实现,,,,,即其中一个组件授权后,,,,,更新所有相同授权的组件,,,,,隐藏授权button。。。
由于需要让授权button完全笼罩在点击区域之上,,,,,以是需要让slot内里的内容撑开父级定位元素,,,,,然后授权button绝对定位在该父元素内,,,,,宽高都设为100%即可。。。也可以通过小程序组件的 externalClasses 从组件外部指定样式。。。代码如下:
.wrapper {
position: relative;
width: 100%;
height: 100%;
.auth {
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
top: 0;
left: 0;
z-index: 10;
}
}
复制代码
<view class="wrapper m-class">
<view bind:tap="handleTap">
<slot></slot>
</view>
<block wx:if="{{!authorized}}">
<button
class="auth"
open-type="{{openType}}"
bindgetphonenumber="getPhoneNumber"
bindgetuserinfo="getUserInfo">
</button>
</block>
</view>
复制代码
需要在组件外部绑定点击区域自己的点击事务,,,,,在已经授权的情形下会触发点击回调。。。
<authorization-block bind:action="callBack" m-class="xxx">
<view class="u-m">
xxxxxxx
</view>
</authorization-block>
复制代码
详细代码:
import event from '../../utils/event'
Component({
externalClasses: ['m-class'],
properties: {
openType: {
type: String,
value: 'getUserInfo'
}
},
data: {
authorized: false
},
methods: {
getPhoneNumber ({detail}) {
const vm = this
if (detail.errMsg === 'getPhoneNumber:ok') {
/*
* 获取到用户手机号后的营业代码
* */
vm._triggerEvent(detail)
}
},
getUserInfo ({detail: {userInfo: {avatarUrl, nickName}, errMsg}}) {
const vm = this
if (errMsg === 'getUserInfo:ok') {
/*
* 获取到用户信息后的营业代码
* */
vm._triggerEvent()
}
},
_triggerEvent (arg) {
const vm = this
/*
* 触发监听器后,,,,,再触发点击区域自己的点击回调
* */
event.triggerEvent([vm.data.config.eventName], true)
vm.triggerEvent('action', arg)
},
handleTap () {
const vm = this
vm.triggerEvent('action')
}
},
attached () {
const vm = this
let config
switch (vm.data.openType) {
case 'getUserInfo':
config = {
eventName: 'userInfo'
}
break
case 'getPhoneNumber':
config = {
eventName: 'phoneNumber'
}
break
}
if (getApp().globalData[config.eventName]) {
vm.setData({
authorized: true
})
} else {
event.addEventListener([config.eventName], vm, (authorized) => {
if (authorized) {
vm.setData({
authorized: true
})
}
})
}
vm.setData({
config
})
},
detached () {
const vm = this
event.removeEventListener([vm.data.config.eventName], vm)
}
})
复制代码
小程序工具开发公司长沙,,,,,是一家有着十年手艺前沿的公司,,,,,我们以先进手艺提供并解决各行业小程序开发,,,,,操作简朴,,,,,支持多种社群营销活动,,,,,提供一套综合性的营销系统。。。以及可视化模板操作,,,,,大大镌汰人力物力本钱。。。
小程序工具提供多类型商城/门店小程序制作,,,,,可视化编辑 1秒天生5步上线。。。通过拖拽、拼接??????榻峁剐〕绦蛏坛且趁,,,,,所看即所得,,,,,只需要美工就能做出细腻商城。。。更多小程序市肆请审查:小程序市肆
KESION pp电子软件
KESION pp电子软件是海内领先的在线教育软件及私域社交电商软件服务提供商,,,,,恒久专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。。。
公司焦点产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化自力安排品牌网校和在线教育咨询等。。。KESION 一直通过手艺立异,,,,,提供产品和服务,,,,,助力企业向数字化转型,,,,,通过科技驱动商业刷新,,,,,让商业变得更智慧!
关于旅游行业来说,,,,,开发一款小程序比起app更节约本钱,,,,,并且还可以借助微信这一大的社交流量给线下来引流,,,,,开发旅游小程序系统很是适合需求。。。...
关于餐饮行业,,,,,开发一个点餐小程序很是适合餐饮行业的需求,,,,,由于点餐恰恰与微信小程序“随用随走”原理相吻合,,,,,一般各人到门店点餐或者点外卖会选择最便捷的方式来举行,,,,,这里...