2017/12/20 0:00:00
來源:不詳
作者:未知
上一節(jié)我們實現(xiàn)了單車報障頁,這一節(jié)我們來實現(xiàn)個人中心頁面:
老套路,先進行頁面分析
-
個人中心頁有兩種狀態(tài),即未登錄和已登錄,所以要求不同數(shù)據(jù)驅動產(chǎn)生的不同頁面
-
點擊登錄/退出登錄按鈕需要響應合理邏輯,并改變按鈕樣式
-
只有登錄狀態(tài)下才會顯示我的錢包按鈕
頁面結構
-
<!--pages/my/index.wxml-->
-
<view class="container">
-
<view class="user-info">
-
<!-- 用戶未登錄就沒有頭像-->
-
<block wx:if="{{userInfo.avatarUrl != ''}}">
-
<image src="{{userInfo.avatarUrl}}"></image>
-
</block>
-
<text>{{userInfo.nickName}}</text>
-
</view>
-
<!-- 用戶未登錄就沒有錢包按鈕-->
-
<block wx:if="{{userInfo.avatarUrl != ''}}">
-
<view class="my-wallet tapbar" bindtap="movetoWallet">
-
<text>我的錢包</text>
-
<text>></text>
-
</view>
-
</block>
-
<button bindtap="bindAction" class="btn-login" hover-class="gray" type="{{bType}}" >{{actionText}}</button>
-
</view>
復制代碼
指令wx:if="boolean":
當boolean為true,被它(block)包裹的元素將會顯示,否則不現(xiàn)實,這樣可以處理在未登錄狀態(tài)下不顯示頭像和錢包按鈕
頁面樣式
-
/* pages/my/index.wxss */
-
.user-info{
-
background-color: #fff;
-
padding-top: 60rpx;
-
}
-
.user-info image{
-
display: block;
-
width: 180rpx;
-
height: 180rpx;
-
border-radius: 50%;
-
margin: 0 auto 40rpx;
-
box-shadow: 0 0 20rpx rgba(0,0,0,.2)
-
}
-
.user-info text{
-
display: block;
-
text-align: center;
-
padding: 30rpx 0;
-
margin-bottom: 30rpx;
-
}
-
.btn-login{
-
position: absolute;
-
bottom: 60rpx;
-
width: 90%;
-
left: 50%;
-
margin-left: -45%;
-
}
-
.gray{
-
background-color: #ccc;
-
}
復制代碼
頁面數(shù)據(jù)邏輯(未登錄狀態(tài)下的數(shù)據(jù)模板初始值定義在data對象里)
-
// pages/my/index.js
-
Page({
-
data:{
-
// 用戶信息
-
userInfo: {
-
avatarUrl: "",
-
nickName: "未登錄"
-
},
-
bType: "primary", // 按鈕類型
-
actionText: "登錄", // 按鈕文字提示
-
lock: false //登錄按鈕狀態(tài),false表示未登錄
-
},
-
// 頁面加載
-
onLoad:function(){
-
// 設置本頁導航標題
-
wx.setNavigationBarTitle({
-
title: '個人中心'
-
})
-
// 獲取本地數(shù)據(jù)-用戶信息
-
wx.getStorage({
-
key: 'userInfo',
-
// 能獲取到則顯示用戶信息,并保持登錄狀態(tài),不能就什么也不做
-
success: (res) => {
-
wx.hideLoading();
-
this.setData({
-
userInfo: {
-
avatarUrl: res.data.userInfo.avatarUrl,
-
nickName: res.data.userInfo.nickName
-
},
-
bType: res.data.bType,
-
actionText: res.data.actionText,
-
lock: true
-
})
-
}
-
});
-
},
-
// 登錄或退出登錄按鈕點擊事件
-
bindAction: function(){
-
this.data.lock = !this.data.lock
-
// 如果沒有登錄,登錄按鈕操作
-
if(this.data.lock){
-
wx.showLoading({
-
title: "正在登錄"
-
});
-
wx.login({
-
success: (res) => {
-
wx.hideLoading();
-
wx.getUserInfo({
-
withCredentials: false,
-
success: (res) => {
-
this.setData({
-
userInfo: {
-
avatarUrl: res.userInfo.avatarUrl,
-
nickName: res.userInfo.nickName
-
},
-
bType: "warn",
-
actionText: "退出登錄"
-
});
-
// 存儲用戶信息到本地
-
wx.setStorage({
-
key: 'userInfo',
-
data: {
-
userInfo: {
-
avatarUrl: res.userInfo.avatarUrl,
-
nickName: res.userInfo.nickName
-
},
-
bType: "warn",
-
actionText: "退出登錄"
-
},
-
success: function(res){
-
console.log("存儲成功")
-
}
-
})
-
}
-
})
-
}
-
})
-
// 如果已經(jīng)登錄,退出登錄按鈕操作
-
}else{
-
wx.showModal({
-
title: "確認退出?",
-
content: "退出后將不能使用ofo",
-
success: (res) => {
-
if(res.confirm){
-
console.log("確定")
-
// 退出登錄則移除本地用戶信息
-
wx.removeStorageSync('userInfo')
-
this.setData({
-
userInfo: {
-
avatarUrl: "",
-
nickName: "未登錄"
-
},
-
bType: "primary",
-
actionText: "登錄"
-
})
-
}else {
-
console.log("cancel")
-
this.setData({
-
lock: true
-
})
-
}
-
}
-
})
-
}
-
},
-
// 跳轉至錢包
-
movetoWallet: function(){
-
wx.navigateTo({
-
url: '../wallet/index'
-
})
-
}
-
})
復制代碼
使用wx.login({})API來進行登錄,使用wx.getUserInfo({})API來獲取用戶信息
我們將用戶信息使用wx.setStorage({})API和wx.getStorage({})這兩個API來設置和獲取本地存儲,用于模擬維護用戶登錄狀態(tài)。真實情況下需要使用session
其他章節(jié)
微信小程序開發(fā)之OFO共享單車——掃碼
微信小程序開發(fā)之OFO共享單車——單車報障頁
微信小程序開發(fā)之OFO共享單車——個人中心頁
微信小程序開發(fā)之OFO共享單車——錢包與充值
【本站聲明】
1、本站文章中所選用的圖片及文字來源于網(wǎng)絡以及用戶投稿,由于未聯(lián)系到知識產(chǎn)權人或未發(fā)現(xiàn)有關知識產(chǎn)權的登記,如有知識產(chǎn)權人并不愿意我們使用,如果有侵權請立即聯(lián)系。
2、本網(wǎng)站不對文章中所涉及的內(nèi)容真實性、準確性、可靠性負責,僅系客觀性描述,如您需要了解該類商品/服務詳細的資訊,請您直接與該類商品/服務的提供者聯(lián)系。
KESION 科汛軟件
KESION 科汛軟件是國內(nèi)領先的在線教育軟件及私域社交電商軟件服務提供商,長期專注于為企業(yè)提供在線教育軟件及社交電商SaaS平臺解決方案。
公司核心產(chǎn)品云開店SaaS社交電商服務平臺、在線教育SaaS服務平臺、教育企業(yè)數(shù)字化SaaS云平臺、企微營銷助手、私有化獨立部署品牌網(wǎng)校和在線教育咨詢等。KESION 不斷通過技術創(chuàng)新,提供產(chǎn)品和服務,助力企業(yè)向數(shù)字化轉型,通過科技驅動商業(yè)革新,讓商業(yè)變得更智慧!