微信小程序相关操作
显示用户基本信息
在微信小程序中,经常会碰到需要展示微信用户的基本信息,如果只是为了显示用户信息,最简单有效的办法是使用open-data,这是微信小程序内置的用于展示微信开放数据的组件,通过改变type来控制显示的信息,可以直接在wxml中使用,不需要其他的授权等操作。
<view class="avatar-container avatar-position">
<open-data type="userAvatarUrl" class="avatar"></open-data>
<open-data type="userNickName"></open-data>
<open-data type="userGender"></open-data>
<open-data type="userCountry"></open-data>
<open-data type="userProvince"></open-data>
<open-data type="userCity"></open-data>
</view>
用户授权
在上面的例子中,使用open-data可以快速便捷的显示用户信息,但是这些基本信息只能用户显示,并不能直接在js中获取,也不能传递到后台,在涉及到需要保存用户信息的需求时,上面的方法就不在适用了。
在老版本的小程序中,可以使用wx.getUserInfo来进行用户授权,但是在新版本的微信小程序中,必须使用button点击触发用户授权
user.wxml
user.js
onGetUserInfo: function (event) {
let userInfo = event.detail.userInfo
if (userInfo) {
this.setData({
hasUserInfo: true,
userInfo: userInfo
})
console.log(userInfo);
}
},
当点击上面的按钮后,就会出现授权的弹窗
点击允许,就能获取到用户的基本信息了
但是并不是任何时候点击授权按钮都能出现授权弹窗:只有当用户未进行授权时,点击授权按钮回出现授权弹窗;当用户已经授权了,再次点击时,不再出现授权弹窗。所以,在获取用户信息前,需要先判断用户是否进行了授权:如果进行了授权,那么就可以直接使用wx.getUserInfo来获取基本信息了;如果没有授权,则显示授权按钮。
结合上面的例子,我们可以这样做,首先判断用户是否进行了授权,用hasUserInfo来标志:如果已经进行了授权,那么久可以直接使用wx.getUserInfo来获取用户信息,拿到了用户信息以后,页面展示就可以直接使用open-data了;如果没有进行授权,则显示授权按钮,并为该按钮绑定事件,引导用户主动授权:
user.wxml
<view class="container">
<image src="/images/my/my@bg.png" class="bg"></image>
<img-btn-cmp wx:if="{{!hasUserInfo}}" open-type="getUserInfo" class="avatar-position" bind:getuserinfo="onGetUserInfo">
<image slot="img" class="avatar" src="/images/my/my.png" />
</img-btn-cmp>
<view class="avatar-container avatar-position">
<image src="{{userInfo.avatarUrl}}" wx:if="{{hasUserInfo}}" class="avatar" />
<open-data wx:if="{{hasUserInfo}}" type="userNickName"></open-data>
</view>
</view>
user.js
Page({
data: {
hasUserInfo: true,
userInfo: null,
}, onReady: function () {
wx.getSetting({
success: (data) => {
if (data.authSetting['scope.userInfo']) {
wx.getUserInfo({
success: (data) => {
this.setData({
hasUserInfo: true,
userInfo: data.userInfo
})
}
})
} else {
this.setData({
hasUserInfo: false
})
}
}
})
},
onGetUserInfo: function (event) {
let userInfo = event.detail.userInfo
if (userInfo) {
this.setData({
hasUserInfo: true,
userInfo: userInfo
})
}
},
})
没有授权之前
点击后进行授权
授权成功后,不再显示授权按钮,而是直接显示用户信息
自定义分享按钮
在微信小程序中实现分享,同样需要使用button触发,不同的是button的类型不同
<button open-type='share'>点我分享</button>
模拟器上是这种效果
在真机上则会直接进入聊天列表
小程序之间的跳转
如果要从小程序A中跳转到小程序B中,那么小程序A和B必须同时关联同一个公众号(服务号或订阅号),满足了这个前提条件以后,才能进行后续操作。
要从小程序A中跳转到小程序B中,还需要有小程序B的app-id,然后在小程序A中使用navigator组件进行跳转
aaa.wxml
<navigator class="nav" target="miniProgram" app-id="wxXXXXXXXXXXXXXX9" open-type="navigate">
<image class="vendor" src="/images/my/vendor.png"></image>
</navigator>
然后在真机上点击图中的按钮就可以实现 小程序之间的跳转了。
微信小程序相关操作的更多相关文章
- 微信小程序相关资料整理
微信小程序官方介绍https://mp.weixin.qq.com/debug/wxadoc/introduction/index.html?t=201818 微信小程序开发资源https://jue ...
- 微信小程序--相关资料
微信小程序Demo https://github.com/zce/weapp-demojustjavac/awesomewechatweapp: 微信小程序开发资源汇总 https://gith ...
- 微信小程序相关三、css写小黄人
小程序上课第三天,因为今天院里有活动,所以没去上课,第四天上午又因为要召开入党转正大会,又耽误了一上午,下午去上课,要了资料.这两天讲了一些零零碎碎的东西,做的实例有上面这个小黄人 都是用的css,基 ...
- 微信小程序相关一、模仿京东静态登录页面
一.培训的第一天,基本上没有什么最新的东西,但是看到老师的代码收获的确实是不少. 1.1.首页代码很简洁,将共有的样式都提取的很好. 1.2.其次是每一个小块写样式的时候用到了好多子代选择器和后代选择 ...
- 微信小程序——动画操作时,rpx 和 px 的转换计算。
嫌长版本: var rpx = 10000; var systemInfo = wx.getSystemInfoSync(); var px = rpx / 750 * systemInfo.wind ...
- 微信小程序不可操作dom节点
//根据历史记录快速搜索 fastSearch:function(e){ console.log(e.currentTarget.id) wx.navigateTo({ url: '../search ...
- 微信小程序相关二、css介绍,菜单制作,表单相关,京东注册页面
一.第二天上午 1.1上午因为有其他的课所以没有去这个课,不过下午看复习的时候的概括,讲了DTD,语法特性,css选择器以及权重,还有一些简单的样式 1.2 DTD Docuement Type 声明 ...
- 微信小程序相关
https://www.cnblogs.com/shenzikun1314/p/7805168.html
- 微信小程序-数组操作
Page({ data: { list:[{ id:, name:'芒果', count: },{ id:, name:'香蕉', count: }, }] } }) 向前插入数据 //要增加的数组 ...
随机推荐
- 测开之路七十七:shell之if、case、for、while
选择语句(if语句) 大于:-gt判断目录是否存在:-d if [ 判断条件 ]; then statement1 Statement2elif [ 判断条件 ]; then statement1 S ...
- CentOS 7.0 开端口
>>> CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下1.直接关闭防火墙systemctl stop firewalld.serv ...
- Delphi 快速读取TXT 指定行的数据
http://blog.csdn.net/MichaelJScofield/article/details/41869785 Delphi 快速读取TXT 指定行的数据 分类:Delphi个人挫品 ( ...
- 所有硬币组合问题——动态规划hdu2069
Problem Description Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cen ...
- $_POST,$_GET,$_REQUEST区分
PHP $_REQUEST PHP $_REQUEST 用于收集 HTML 表单提交的数据. 下面的例子展示了一个包含输入字段及提交按钮的表单.当用户通过点击提交按钮来提交表单数据时, 表单数据将发送 ...
- 20190819 On Java8 第九章 多态
第九章 多态 向上转型回溯 可扩展性 由于多态机制,在一个设计良好的面向对象程序中,许多方法,只与基类接口通信.这样的程序是可扩展的,因为可以从通用的基类派生出新的数据类型,从而添加新的功能.那些操纵 ...
- Java实现红黑树
转自:http://www.cnblogs.com/skywang12345/p/3624343.html 红黑树的介绍 红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉 ...
- Spring学习(三)--高级装配
一.Spring profile 在开发软件的时候,有一个很大的挑战就是将应用程序从一个环境迁 移到另外一个环境.开发阶段中,某些环境相关做法可能并不适合迁 移到生产环境中,甚至即便迁移过去也无法正常 ...
- P5030 长脖子鹿放置
题目背景 众周所知,在西洋棋中,我们有城堡.骑士.皇后.主教和长脖子鹿. 题目描述 如图所示,西洋棋的"长脖子鹿",类似于中国象棋的马,但按照"目"字攻击,且没 ...
- 学python2.7简单还是python3.0简单,两者区别
学python2.7简单还是python3.0简单,谈谈两者区别 1. 使用__future__模块 Python 3.X 引入了一些与Python 2 不兼容的关键字和特性.在Python 2中,可 ...