3.4 開發參與投票頁面
參與投票頁面同樣需要收集用戶提交的信息,哪個用戶在哪個投票選擇了什么選項,因此它也是一個表單頁面
3.4.1 如何獲取投票信息
假設用戶A在投票創建頁面后填了表單(1.創建投票),用戶A 點了提交,投票信息提交到了服務器端。
用戶A會獲得來自服務器端的投票ID(2.獲得投票的ID),然后用戶A的手機頁面會跳轉到投票頁面,用戶A將這個頁面以小程序卡片的形式分享到微信群中。(3.發送小程序卡片,路徑參數有投票ID)
微信群中的用戶B點擊小程序卡片,他的手機用投票ID向服務器端發送想獲得投票信息的請求(()4.使用投票ID請求投票信息),然后得到來自服務器端給的投票信息(5.獲得投票信息)。
當用戶B打開投票信息頁面時,投票頁面需要顯示標題,描述,選項等數據,因此在投票信息頁面的onLoad方法中獲取它們。
用戶A如果創建多個投票提交,服務器端需要給每個投票都創建不同的投票ID以作區分,因此每個ID在服務器都是唯一的。ID可以是number類型,也可以是string類型。
整個過程又可以分為三個關鍵點:
一.提交服務器信息獲得投票id
二.分享投票信息
三.用投票id從服務器獲得投票信息
一三代碼如下:
dataID = postDataToServer(data)
data = postDataFromServer(dataID)
二的話,先創建投票頁面,在app.js頁面添加如下代碼:
"pages":[
????"pages/index/index",?//主頁
????"pages/createVote/createVote", //創建投票頁面
????"pages/vote/vote", //投票頁面
...
}
保存后就有投票頁面了。
接下來需要在創建投票頁面createVote.js的提交方法formSubmit中將數據傳到云端,并帶著傳回的投票ID以頁面路徑參數的形式跳轉到投票頁面。代碼如下:
??formSubmit(){
????const?formData?=?{
??????type:this.data.type,
??????voteTitle:?this.data.formTitle,
??????voteDesc:?this.data.formDesc,
??????optionList:?this.data.optionList,
??????endDate:?this.data.endDate,?
??????isAnonymousfalse:?this.data.isAnonymousfalse
????}
????//TODO?將formData提交到云端
????const?voteID?=?'test'?//偽造一個數據,作為服務器端返回的投票ID
????wx.redirectTo({
??????url:?'/pages/vote/vote?voteID='?+?voteID,
????})
??}
wx.redirectTo和wx.navigateTo有區別,redirectTo跳轉時會關閉當前頁面,單擊返回時會直接跳轉到上一級的頁面,不存在就退出。navigateTo跳轉時會保留當前頁面,單擊返回時還可以返回這個頁面。
3.4.1 如何獲取投票信息結束啦
3.4.2 借用偽造數據開發功能敬請期待。再見┏(^0^)┛