微信小程序> 小程序自定义授权组件

小程序自定义授权组件

浏览量:576 时间: 来源:骑着蜗牛一路狂奔

首先新建一个component目录,在该目录下在新建一个文件名为logo的component组件
logo组件的wxml

<view wx:if="{{ishow}}">    <view class="isMask"></view>    <view class="isLogin">        <view class="loginTitle">微信授权</view>        <view class="loginshopImg">            <view>小程序将获取以下权限:</view>            <view>(如未授权,可能无法正常使用该小程序)</view>        </view>        <view class="isAgary">            <text></text>            <view>获取你的公开信息(昵称、头像等)</view>        </view>        <view class="isLoginBtn">              <button bindgetuserinfo="getUserInfo" open-type="getUserInfo">授权</button>        </view>    </view></view>

logo.wxss

.isMask {    width: 100%;    height: 100%;    position: fixed;    top: 0;    left: 0;    z-index: 1000;    background: #000;    opacity: 0.5;}.isLogin {    position: fixed;    padding: 50rpx 50rpx;    width: 480rpx;    height: 320rpx;    background: #fff;    top: 50%;    left: 50%;   transform: translate(-50%,-50%);   border-radius: 10rpx;    z-index: 1001;}.isLoginBtn {    display: flex;    justify-content: space-around;}.isLoginBtn button {    background: #fff;    width: 100%;    height: 68repx;    padding-left: 0rpx;    padding-right: 0rpx;    margin-right: 0rpx;    margin-left: 0rpx;    font-size: 28rpx;    margin-top: 50rpx;    color: #4bad37;    border: 1rpx solid #4bad37;}.loginTitle {    font-size: 34rpx;}.loginshopImg {    height: 80rpx;    font-size: 26rpx;    padding: 20rpx 0rpx;    border-bottom: 1rpx solid #ececec;}.loginshopImg>image {    width: 68rpx;    height: 68rpx;    border-radius: 50%;    margin-right: 20rpx;}.isAgary {    display: flex;    align-items: center;    font-size: 24rpx;    color: #666;    margin-top: 30rpx;}.isAgary>text {    margin-right: 20rpx;}.tite{  font-size: 30rpx;  text-align: center;  font-weight: bold;}.prices{  position: absolute;  right: 21rpx;  bottom: 21rpx;  font-size: 54rpx;  color: #fff;  font-weight: bold;}.gocars{  font-size: 24rpx;  color: #fff;  position: absolute;  left: 37rpx;  top: 28rpx;}.dianz{  display: inline-block;  vertical-align: middle;  width: 37rpx;  height: 37rpx;}.dianzs{  display: inline-block;  vertical-align: middle;  width: 37rpx;  height: 37rpx;}

logo.js

// component/grant.jsconst app = getApp();Component({  options:{    multipleSlots: true  },  /**   * 组件的属性列表   */  properties: {     },  /**   * 组件的初始数据   */  data: {    ishow:false  },  /**   * 组件的方法列表   */  methods: {    // 隐藏授权弹窗    hideDialog(){      this.setData({        ishow: false      })    },    //显示授权弹窗    showDialog(){      this.setData({        ishow: true      })    },    //授权    getUserInfo(e){      let detail = e.detail;      if (detail.errMsg == "getUserInfo:fail auth deny") {        wx.showToast({          title: '请授权登陆',          icon: 'none'        })      } else {        this.setData({          ishow: false        })        app.globalData.userInfo = detail.userInfo;        wx.setStorage({          key: 'userInfo',          data: detail.userInfo,        })      }          }  }})

在需要的页面的json文件中引入组件,组件名是自定义的,路径采用绝对路径

"usingComponents": {    "logo":"/component/logo"  }

在需要的页面中直接声明组件

<logo class="logo"></logo>
//获取应用实例const app = getApp();Page({  data: {  },    onLoad: function () {  //父组件获取子组件对象方法,根据样式获取,建议使用selectAllComponents    this.logo= this.selectComponent(".logo");    //判断缓存中有没有授权信息,如果没有就显示弹窗,有就直接隐藏弹窗    let storageKey = wx.getStorageSync('userInfo');    if (storageKey){      wx.getStorage({        key: 'userInfo',        success: (res) => {          if (res.data) {            app.globalData.userInfo = res.data;            this.logo.hideDialog();//调用子组件的方法          }        },      })    }else{      this.logo.showDialog();//调用子组件的方法    }     },})

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎