開發小程式中,遇到的wepy的幾點坑,記錄一下;
更詳細的專案總結記錄請見我的個人部落格:
1.定時器:
在頁面中有需要用到倒計時或者其他定時器任務時,新建的定時器在解除安裝頁面時一定要清除掉,有時候頁面可能不止乙個定時器需求,在解除安裝頁面(onunload鉤子函式)的時候一定要清除掉當前不用的定時器
let overtimestr = data.over_time.split('t')最終把時間分割為[年,月, 日, 時, 分, 秒]的陣列,(如果後端已經把時間處理過了那就更好了),然後把該陣列傳遞給倒計時函式:let time1 = overtimestr[0].replace(/-/g,",")
let time2 = overtimestr[1].replace(/:/g,',')
let overtime = time1+ ',' +time2
let overtimearr = overtime.split(',')
that.countdownctrl( overtimearr, 0 );
countdownctrl( time, group )至此,倒計時效果處理完畢,ps:終止時間一定要大於currentdate,否則顯示會出現異常(包括但不限於倒計時閃爍、亂碼等)this.interva1 = setinterval(() =>
else
if( group === 1)
this
}, 1000);
}
最後,退出該頁面去其他頁面時,一定要在頁碼解除安裝鉤子中清除倒計時!!!
onunload()2.三層元件,阻止點選事件傳播:三層元件巢狀,第三層的點選事件不能傳到第一層去,適用於遮罩層+picker,阻止事件點選向上傳播,因為每一層都新增有點選事件,互不干擾、
解決: 新增函式 catchtap="funcname" 即可,funcname可為空函式,也可以直接不寫
3.元件傳值:
元件傳值和vue有點細微區別,vue強調父元件的陣列和物件不要直接傳到子元件使用,應為子元件可能會修改這個data,如圖:
但是,wepy中,有時候確實需要把乙個物件傳遞到子元件使用,單個傳遞物件屬性過於繁瑣,而且!!!如果單個傳遞物件的屬性到子元件,如果該屬性是乙個陣列,則子元件永遠會接收到 undefined 。此時最好用整個物件傳值替代單個物件屬性逐個傳值的方法,
且一定要在傳值時加入 .sync 修飾符,雙向傳值繫結。確保從介面拿到的資料也能傳遞到子元件,而非 undefined
:circlememberslist.sync="circlememberslist"4.token判斷在與後台互動的時候,token必不可少。尤其是在小程式分享出去的鏈結,由其他使用者點開分享鏈結進入小程式內部,此時更是要判斷token,token的判斷一般選在 onshow()鉤子執行而不在 onload()鉤子內執行。若不存在token,則應該執行登入去拿取token
5.formid
submitform(e)準備: crypto-js.js md5.js
sign函式:
/*前端點選支付按鈕:* * 簽名 */
function
sign(timestamp, content)
//支付函式:單獨支付介面
alonepay(arg) )
}}).then( res =>).then(res =>)
},
//至此,支付就已經完成!支付gocirclepay( circle_id, timestamp, sign, content, mode) ,
gettoken:
true
}).then( res =>
if( signlocal !==signserver ) )
return
} let contentarr = contentserver.split('&')
const timestamp = contentarr[0].split('=')[1];
const noncestr = contentarr[1].split('=')[1];
let index = contentarr[2].indexof("=");
const package1 = contentarr[2].slice(index+1)
const signtype = contentarr[3].split('=')[1];
const paysign = contentarr[4].split('=')[1];
wepy.requestpayment().then(res =>, 1000)
})}).then(res =>,
gettoken:
true
}).then( res =>&sharelink=$`)
} else
if( mode === 2) &group_form_id=$`)
}})
}).catch(res =>)})}
7.上傳(採用七牛雲)
頁面結構:
上傳生活照base.oploadimg()函式:(最多9張)
for="}" index="index" item="item" key="index">
if="}">
//上傳const uploadimg = (imageurl, uptokenurl) =>, (error) =>, );
});
}
//至此,上傳解決從相簿選擇**上傳
addimg()).then(async(res1) =>
let res =await base.uploadimg(filepath[i], that.$parent.globaldata.qiniutoken);
that.images.push(res.imageurl);
log('image長度:', that.images.length)
log('image:', that.images)
if( that.images.length >= 9)
if(that.images.length > 9)
if(that.images.length >0 &&that.config.fimages)
//上傳使用者頭像列表
that.userinfo.photos =that.images
if(i === filepath.length -1)
}}).
catch((res) =>
})},
//取消上傳
canceluploadimg(e)
let index =e.target.id
this.images.splice(index, 1)
},
APP測試功能點總結
1 功能性測試 注意 就是根據產品需求文件編寫測試用例而進行測試。2 相容性測試 1 適配性測試 1 手機不同解析度支援 客戶端支援的解析度等 2 手機不同版本的支援 2.34.04.4等 在測試計畫中 需要安排單獨的時間用於android不同系統的相容性測試,包括2.0以下版本和4.0以上等 3 ...
lotus 基本開發功能總結 二
domino資料庫資料拷貝 源資料庫即 被拷貝的資料庫 目的資料庫即 存放拷貝資料的資料庫 1 跨資料庫拷貝 方法一 使用 拷貝資料 step1 在資料來源庫中新建資料拷貝 選擇 中的操作,新增操作 step2 新增操作中選擇拷貝到資料庫,選擇目的資料庫,填寫好相關資訊,儲存就 ok step3 執...
交流 總結 高效的開發功能
怎樣高效的開發功能?現在感覺越來越不知道怎樣高效開發乙個功能了?各位大大,能否給小弟一點指點,交流交流 謝了 開發流程應該可以固定,從而尋找出最好最快的開發模式 結合以前的開發,我總結了一下,準備用這個來做乙個持續改進和總結 畫ui草圖 預期效果圖 定呼叫介面 根據草圖確定主要是有哪些action參...