微信小程序開發(fā)之OFO共享單車,微信小程序錢包與充值頁(yè)面制作
2017-12-20
導(dǎo)讀:上一節(jié)我們完成了登錄頁(yè)面的實(shí)現(xiàn),這一節(jié)讓我們完成登錄后的錢包頁(yè)面和充值頁(yè)面 Screenshot_2017-05-07-10-16-12-744_com.tencent.mm.png (101.39 KB, 下載次數(shù): 5) 下載附件 保存到相冊(cè) 2017-6-5 14:40 上...
上一節(jié)我們完成了登錄頁(yè)面的實(shí)現(xiàn),這一節(jié)讓我們完成登錄后的錢包頁(yè)面和充值頁(yè)面
頁(yè)面分析
頁(yè)面結(jié)構(gòu)
復(fù)制代碼
頁(yè)面樣式
復(fù)制代碼
頁(yè)面數(shù)據(jù)邏輯
復(fù)制代碼
我們將金額信息也使用wx.setStorage({})和wx.getStorage({})這兩個(gè)API來(lái)設(shè)置和獲取本地存儲(chǔ),用于模擬充值,便于做加減
點(diǎn)擊登錄按鈕,跳轉(zhuǎn)到充值頁(yè)面:
頁(yè)面分析
頁(yè)面結(jié)構(gòu)
復(fù)制代碼
頁(yè)面樣式
復(fù)制代碼
頁(yè)面數(shù)據(jù)邏輯
復(fù)制代碼
充值頁(yè)面關(guān)閉時(shí)更新本地金額數(shù)據(jù),所以需要在unLoad事件里執(zhí)行
擴(kuò)展:
結(jié)語(yǔ):
到這里,ofo小程序的制作就到了尾聲了。我們創(chuàng)建了多個(gè)頁(yè)面,然后一個(gè)一個(gè)頁(yè)面從頁(yè)面分析,到完成數(shù)據(jù)邏輯,分別響應(yīng)著不同的業(yè)務(wù)邏輯,有的頁(yè)面與頁(yè)面之間有數(shù)據(jù)往來(lái),我們就通過(guò)跳轉(zhuǎn)頁(yè)面?zhèn)鲄⒒蛟O(shè)置本地存儲(chǔ)來(lái)將它們建立起聯(lián)系,環(huán)環(huán)相扣,構(gòu)建起了整個(gè)小程序的基本功能。
通過(guò)這個(gè)小程序,我們發(fā)現(xiàn)文檔提供的API在不知不覺中已經(jīng)失去了它的神秘感,它們就是不同的工具,為小程序?qū)崿F(xiàn)業(yè)務(wù)請(qǐng)求搭建肢體骨架。其實(shí)小程序的處理簡(jiǎn)單的業(yè)務(wù)邏輯很簡(jiǎn)單,只要用心去思考,邊實(shí)現(xiàn)邊查文檔就能體會(huì)到它的精悍之處,本小程序還存在諸多不足,不過(guò)對(duì)于初學(xué)者熟悉小程序的頁(yè)面跳轉(zhuǎn),api等或許有些幫助。
其他章節(jié)
微信小程序開發(fā)之OFO共享單車——掃碼
微信小程序開發(fā)之OFO共享單車——單車報(bào)障頁(yè)
微信小程序開發(fā)之OFO共享單車——個(gè)人中心頁(yè)
微信小程序開發(fā)之OFO共享單車——錢包與充值
頁(yè)面分析
- 需要獲取錢包余額數(shù)據(jù)并顯示在頁(yè)面上,充值后數(shù)據(jù)會(huì)自動(dòng)更新
- 其他可點(diǎn)擊按鈕分別顯示對(duì)應(yīng)的模態(tài)框,因?yàn)槲⑿胖辉试S五個(gè)頁(yè)面層級(jí),避免過(guò)多頁(yè)面層級(jí)造成用戶迷失。
頁(yè)面結(jié)構(gòu)
- <!--pages/wallet/index.wxml-->
- <view class="container">
- <view class="overage">
- <view>
- <text class="overage-header">我的余額(元)</text>
- </view>
- <view>
- <text class="overage-amount">{{overage}}</text>
- </view>
- <view>
- <text bindtap="overageDesc" class="overage-desc">余額說(shuō)明</text>
- </view>
- </view>
- <button bindtap="movetoCharge" class="btn-charge">充值</button>
- <view bindtap="showTicket" class="my-ticket tapbar">
- <text>我的用車券</text>
- <text><text class="c-g">{{ticket}}張</text>></text>
- </view>
- <view bindtap="showDeposit" class="my-deposit tapbar">
- <text>我的押金</text>
- <text><text class="c-y">99元,押金退款</text>></text>
- </view>
- <view bindtap="showInvcode" class="my-invcode tapbar">
- <text>關(guān)于ofo</text>
- <text>></text>
- </view>
- </view>
頁(yè)面樣式
- /* pages/wallet/index.wxss */
- .overage{
- background-color: #fff;
- padding: 40rpx 0;
- text-align: center;
- }
- .overage-header{
- font-size: 24rpx;
- }
- .overage-amount{
- display: inline-block;
- padding: 20rpx 0;
- font-size: 100rpx;
- font-weight: 700;
- }
- .overage-desc{
- padding: 10rpx 30rpx;
- font-size: 24rpx;
- border-radius: 40rpx;
- border: 1px solid #666;
- }
- .my-deposit{
- margin-top: 2rpx;
- }
- .my-invcode{
- margin-top: 40rpx;
- }
- .c-y{
- color: #b9dd08;
- padding-top: -5rpx;
- padding-right: 10rpx;
- }
- .c-g{
- padding-top: -5rpx;
- padding-right: 10rpx;
- }
頁(yè)面數(shù)據(jù)邏輯
- // pages/wallet/index.js
- Page({
- data:{
- overage: 0,
- ticket: 0
- },
- // 頁(yè)面加載
- onLoad:function(options){
- wx.setNavigationBarTitle({
- title: '我的錢包'
- })
- },
- // 頁(yè)面加載完成,更新本地存儲(chǔ)的overage
- onReady:function(){
- wx.getStorage({
- key: 'overage',
- success: (res) => {
- this.setData({
- overage: res.data.overage
- })
- }
- })
- },
- // 頁(yè)面顯示完成,獲取本地存儲(chǔ)的overage
- onShow:function(){
- wx.getStorage({
- key: 'overage',
- success: (res) => {
- this.setData({
- overage: res.data.overage
- })
- }
- })
- },
- // 余額說(shuō)明
- overageDesc: function(){
- wx.showModal({
- title: "",
- content: "充值余額0.00元+活動(dòng)贈(zèng)送余額0.00元",
- showCancel: false,
- confirmText: "我知道了",
- })
- },
- // 跳轉(zhuǎn)到充值頁(yè)面
- movetoCharge: function(){
- // 關(guān)閉當(dāng)前頁(yè)面,跳轉(zhuǎn)到指定頁(yè)面,返回時(shí)將不會(huì)回到當(dāng)前頁(yè)面
- wx.redirectTo({
- url: '../charge/index'
- })
- },
- // 用車券
- showTicket: function(){
- wx.showModal({
- title: "",
- content: "你沒有用車券了",
- showCancel: false,
- confirmText: "好吧",
- })
- },
- // 押金退還
- showDeposit: function(){
- wx.showModal({
- title: "",
- content: "押金會(huì)立即退回,退款后,您將不能使用ofo共享單車確認(rèn)要進(jìn)行此退款嗎?",
- cancelText: "繼續(xù)使用",
- cancelColor: "#b9dd08",
- confirmText: "押金退款",
- confirmColor: "#ccc",
- success: (res) => {
- if(res.confirm){
- wx.showToast({
- title: "退款成功",
- icon: "success",
- duration: 2000
- })
- }
- }
- })
- },
- // 關(guān)于ofo
- showInvcode: function(){
- wx.showModal({
- title: "ofo共享單車",
- content: "微信服務(wù)號(hào):ofobike,網(wǎng)址:m.ofo.so",
- showCancel: false,
- confirmText: "玩的6"
- })
- }
- })
我們將金額信息也使用wx.setStorage({})和wx.getStorage({})這兩個(gè)API來(lái)設(shè)置和獲取本地存儲(chǔ),用于模擬充值,便于做加減
點(diǎn)擊登錄按鈕,跳轉(zhuǎn)到充值頁(yè)面:
頁(yè)面分析
- 輸入金額,存儲(chǔ)在data對(duì)象里,點(diǎn)擊充值后,設(shè)置本地金額數(shù)據(jù)
- 點(diǎn)擊充值按鈕后自動(dòng)跳轉(zhuǎn)到錢包頁(yè)
頁(yè)面結(jié)構(gòu)
- <!--pages/charge/index.wxml-->
- <view class="container">
- <view class="title">請(qǐng)輸入充值金額</view>
- <view class="input-box">
- <input bindinput="bindInput" />
- </view>
- <button bindtap="charge" class="btn-charge">充值</button>
- </view>
頁(yè)面樣式
- /* pages/charge/index.wxss */
- .input-box{
- background-color: #fff;
- margin: 0 auto;
- padding: 20rpx 0;
- border-radius: 10rpx;
- width: 90%;
- }
- .input-box input{
- width: 100%;
- height: 100%;
- text-align: center;
- }
頁(yè)面數(shù)據(jù)邏輯
- // pages/charge/index.js
- Page({
- data:{
- inputValue: 0
- },
- // 頁(yè)面加載
- onLoad:function(options){
- wx.setNavigationBarTitle({
- title: '充值'
- })
- },
- // 存儲(chǔ)輸入的充值金額
- bindInput: function(res){
- this.setData({
- inputValue: res.detail.value
- })
- },
- // 充值
- charge: function(){
- // 必須輸入大于0的數(shù)字
- if(parseInt(this.data.inputValue) <= 0 || isNaN(this.data.inputValue)){
- wx.showModal({
- title: "警告",
- content: "咱是不是還得給你錢???!",
- showCancel: false,
- confirmText: "不不不不"
- })
- }else{
- wx.redirectTo({
- url: '../wallet/index',
- success: function(res){
- wx.showToast({
- title: "充值成功",
- icon: "success",
- duration: 2000
- })
- }
- })
- }
- },
- // 頁(yè)面銷毀,更新本地金額,(累加)
- onUnload:function(){
- wx.getStorage({
- key: 'overage',
- success: (res) => {
- wx.setStorage({
- key: 'overage',
- data: {
- overage: parseInt(this.data.inputValue) + parseInt(res.data.overage)
- }
- })
- },
- // 如果沒有本地金額,則設(shè)置本地金額
- fail: (res) => {
- wx.setStorage({
- key: 'overage',
- data: {
- overage: parseInt(this.data.inputValue)
- },
- })
- }
- })
- }
- })
充值頁(yè)面關(guān)閉時(shí)更新本地金額數(shù)據(jù),所以需要在unLoad事件里執(zhí)行
擴(kuò)展:
- 使用easy-mock偽造數(shù)據(jù)小程序多次請(qǐng)求了服務(wù)器“發(fā)送/接受”數(shù)據(jù),其實(shí)這里使用了easy-mock這個(gè)網(wǎng)站偽造的數(shù)據(jù)。
- easy-mock可以作為前端開發(fā)的偽后端,自己構(gòu)造數(shù)據(jù)來(lái)測(cè)試前端代碼。方便又快捷。
-
比如我們這個(gè)小程序用到了后端api接口
- 提交報(bào)障信息的反饋
- 單車編號(hào)和解鎖密碼
- 單車經(jīng)緯度
結(jié)語(yǔ):
到這里,ofo小程序的制作就到了尾聲了。我們創(chuàng)建了多個(gè)頁(yè)面,然后一個(gè)一個(gè)頁(yè)面從頁(yè)面分析,到完成數(shù)據(jù)邏輯,分別響應(yīng)著不同的業(yè)務(wù)邏輯,有的頁(yè)面與頁(yè)面之間有數(shù)據(jù)往來(lái),我們就通過(guò)跳轉(zhuǎn)頁(yè)面?zhèn)鲄⒒蛟O(shè)置本地存儲(chǔ)來(lái)將它們建立起聯(lián)系,環(huán)環(huán)相扣,構(gòu)建起了整個(gè)小程序的基本功能。
通過(guò)這個(gè)小程序,我們發(fā)現(xiàn)文檔提供的API在不知不覺中已經(jīng)失去了它的神秘感,它們就是不同的工具,為小程序?qū)崿F(xiàn)業(yè)務(wù)請(qǐng)求搭建肢體骨架。其實(shí)小程序的處理簡(jiǎn)單的業(yè)務(wù)邏輯很簡(jiǎn)單,只要用心去思考,邊實(shí)現(xiàn)邊查文檔就能體會(huì)到它的精悍之處,本小程序還存在諸多不足,不過(guò)對(duì)于初學(xué)者熟悉小程序的頁(yè)面跳轉(zhuǎn),api等或許有些幫助。
其他章節(jié)
微信小程序開發(fā)之OFO共享單車——掃碼
微信小程序開發(fā)之OFO共享單車——單車報(bào)障頁(yè)
微信小程序開發(fā)之OFO共享單車——個(gè)人中心頁(yè)
微信小程序開發(fā)之OFO共享單車——錢包與充值
第二部分:如何開通一個(gè)小商店