正在显示
12 个修改的文件
包含
236 行增加
和
0 行删除
app.js
0 → 100644
1 | +//app.js | ||
2 | +App({ | ||
3 | + onLaunch: function () { | ||
4 | + // 展示本地存储能力 | ||
5 | + var logs = wx.getStorageSync('logs') || [] | ||
6 | + logs.unshift(Date.now()) | ||
7 | + wx.setStorageSync('logs', logs) | ||
8 | + | ||
9 | + // 登录 | ||
10 | + wx.login({ | ||
11 | + success: res => { | ||
12 | + // 发送 res.code 到后台换取 openId, sessionKey, unionId | ||
13 | + } | ||
14 | + }) | ||
15 | + // 获取用户信息 | ||
16 | + wx.getSetting({ | ||
17 | + success: res => { | ||
18 | + if (res.authSetting['scope.userInfo']) { | ||
19 | + // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 | ||
20 | + wx.getUserInfo({ | ||
21 | + success: res => { | ||
22 | + // 可以将 res 发送给后台解码出 unionId | ||
23 | + this.globalData.userInfo = res.userInfo | ||
24 | + | ||
25 | + // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 | ||
26 | + // 所以此处加入 callback 以防止这种情况 | ||
27 | + if (this.userInfoReadyCallback) { | ||
28 | + this.userInfoReadyCallback(res) | ||
29 | + } | ||
30 | + } | ||
31 | + }) | ||
32 | + } | ||
33 | + } | ||
34 | + }) | ||
35 | + }, | ||
36 | + globalData: { | ||
37 | + userInfo: null | ||
38 | + } | ||
39 | +}) |
app.json
0 → 100644
app.wxss
0 → 100644
pages/index/index.js
0 → 100644
1 | +//index.js | ||
2 | +//获取应用实例 | ||
3 | +const app = getApp() | ||
4 | + | ||
5 | +Page({ | ||
6 | + data: { | ||
7 | + motto: 'Hello World', | ||
8 | + userInfo: {}, | ||
9 | + hasUserInfo: false, | ||
10 | + canIUse: wx.canIUse('button.open-type.getUserInfo') | ||
11 | + }, | ||
12 | + //事件处理函数 | ||
13 | + bindViewTap: function() { | ||
14 | + wx.navigateTo({ | ||
15 | + url: '../logs/logs' | ||
16 | + }) | ||
17 | + }, | ||
18 | + onLoad: function () { | ||
19 | + if (app.globalData.userInfo) { | ||
20 | + this.setData({ | ||
21 | + userInfo: app.globalData.userInfo, | ||
22 | + hasUserInfo: true | ||
23 | + }) | ||
24 | + } else if (this.data.canIUse){ | ||
25 | + // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 | ||
26 | + // 所以此处加入 callback 以防止这种情况 | ||
27 | + app.userInfoReadyCallback = res => { | ||
28 | + this.setData({ | ||
29 | + userInfo: res.userInfo, | ||
30 | + hasUserInfo: true | ||
31 | + }) | ||
32 | + } | ||
33 | + } else { | ||
34 | + // 在没有 open-type=getUserInfo 版本的兼容处理 | ||
35 | + wx.getUserInfo({ | ||
36 | + success: res => { | ||
37 | + app.globalData.userInfo = res.userInfo | ||
38 | + this.setData({ | ||
39 | + userInfo: res.userInfo, | ||
40 | + hasUserInfo: true | ||
41 | + }) | ||
42 | + } | ||
43 | + }) | ||
44 | + } | ||
45 | + }, | ||
46 | + getUserInfo: function(e) { | ||
47 | + console.log(e) | ||
48 | + app.globalData.userInfo = e.detail.userInfo | ||
49 | + this.setData({ | ||
50 | + userInfo: e.detail.userInfo, | ||
51 | + hasUserInfo: true | ||
52 | + }) | ||
53 | + } | ||
54 | +}) |
pages/index/index.wxml
0 → 100644
1 | +<!--index.wxml--> | ||
2 | +<view class="container"> | ||
3 | + <view class="userinfo"> | ||
4 | + <button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button> | ||
5 | + <block wx:else> | ||
6 | + <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image> | ||
7 | + <text class="userinfo-nickname">{{userInfo.nickName}}</text> | ||
8 | + </block> | ||
9 | + </view> | ||
10 | + <view class="usermotto"> | ||
11 | + <text class="user-motto">{{motto}}</text> | ||
12 | + </view> | ||
13 | +</view> |
pages/index/index.wxss
0 → 100644
1 | +/**index.wxss**/ | ||
2 | +.userinfo { | ||
3 | + display: flex; | ||
4 | + flex-direction: column; | ||
5 | + align-items: center; | ||
6 | +} | ||
7 | + | ||
8 | +.userinfo-avatar { | ||
9 | + width: 128rpx; | ||
10 | + height: 128rpx; | ||
11 | + margin: 20rpx; | ||
12 | + border-radius: 50%; | ||
13 | +} | ||
14 | + | ||
15 | +.userinfo-nickname { | ||
16 | + color: #aaa; | ||
17 | +} | ||
18 | + | ||
19 | +.usermotto { | ||
20 | + margin-top: 200px; | ||
21 | +} |
pages/logs/logs.js
0 → 100644
pages/logs/logs.json
0 → 100644
pages/logs/logs.wxml
0 → 100644
pages/logs/logs.wxss
0 → 100644
project.config.json
0 → 100644
1 | +{ | ||
2 | + "description": "项目配置文件。", | ||
3 | + "packOptions": { | ||
4 | + "ignore": [] | ||
5 | + }, | ||
6 | + "setting": { | ||
7 | + "urlCheck": true, | ||
8 | + "es6": true, | ||
9 | + "postcss": true, | ||
10 | + "minified": true, | ||
11 | + "newFeature": true | ||
12 | + }, | ||
13 | + "compileType": "miniprogram", | ||
14 | + "libVersion": "2.2.2", | ||
15 | + "appid": "wxe91c67adba6ac02d", | ||
16 | + "projectname": "%E8%87%AA%E7%84%B6%E4%BA%BA%E7%A8%8E%E6%94%B6", | ||
17 | + "isGameTourist": false, | ||
18 | + "condition": { | ||
19 | + "search": { | ||
20 | + "current": -1, | ||
21 | + "list": [] | ||
22 | + }, | ||
23 | + "conversation": { | ||
24 | + "current": -1, | ||
25 | + "list": [] | ||
26 | + }, | ||
27 | + "game": { | ||
28 | + "currentL": -1, | ||
29 | + "list": [] | ||
30 | + }, | ||
31 | + "miniprogram": { | ||
32 | + "current": -1, | ||
33 | + "list": [] | ||
34 | + } | ||
35 | + } | ||
36 | +} |
utils/util.js
0 → 100644
1 | +const formatTime = date => { | ||
2 | + const year = date.getFullYear() | ||
3 | + const month = date.getMonth() + 1 | ||
4 | + const day = date.getDate() | ||
5 | + const hour = date.getHours() | ||
6 | + const minute = date.getMinutes() | ||
7 | + const second = date.getSeconds() | ||
8 | + | ||
9 | + return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') | ||
10 | +} | ||
11 | + | ||
12 | +const formatNumber = n => { | ||
13 | + n = n.toString() | ||
14 | + return n[1] ? n : '0' + n | ||
15 | +} | ||
16 | + | ||
17 | +module.exports = { | ||
18 | + formatTime: formatTime | ||
19 | +} |
请
注册
或
登录
后发表评论