微信商城小程序開發(fā)注意要點(diǎn)
這篇文章針對(duì)微信商城小程序開發(fā)時(shí)經(jīng)常遇到的問題,這篇說一下我們?cè)诖舜伍_發(fā)商城類的小程序時(shí)遇到的一些需要注意的小問題!
⒈收貨地址
這個(gè)問題,想起來就醉的不行!在開始靜態(tài)布局的時(shí)候,費(fèi)了大半天勁,把整個(gè)選擇地址,創(chuàng)建地址(地圖選址),重新編輯修改地址,刪除地址的頁面都寫好,然后在手機(jī)預(yù)覽。點(diǎn)一下選擇收貨地址,蹦出來兩套頁面啊!一套就是我寫的,另一套是……
當(dāng)初是死活也沒想到小程序自帶的 wx.chooseAdress 是直接調(diào)用微信底層的方法的,而且所有功能應(yīng)有盡有。真是欲哭無淚啊?。?!
分析下發(fā)生這種事情的原因:首先剛開始接觸小程序,對(duì)一些方法在不了解的情況下就開始入手寫代碼,也算是個(gè)大忌了;其次這個(gè)功能在較低版本的開發(fā)者工具上面是預(yù)覽不出該效果的,只能在手機(jī)預(yù)覽;再次臣妾實(shí)在是沒想到啊。
就當(dāng)是個(gè)教訓(xùn)了,在此提醒各位新手一定要避開這個(gè)坑!
⒉小程序最多只能跳5棧
在開發(fā)小程序前一定要熟知業(yè)務(wù)流程,盡量把跳轉(zhuǎn)頁面控制在5棧之內(nèi)。詳情參考 API 。
如果遇到一些比較復(fù)雜的業(yè)務(wù)流程,無法控制在5棧之內(nèi),請(qǐng)參考某大神的系列文章
⒊頁面?zhèn)髦?nbsp;
這個(gè)比較簡(jiǎn)單些,用法跟html+javascript類似。方法有多種,我只說我用到的兩種:通過鏈接傳值和本地存儲(chǔ)傳值!
鏈接傳值:
wxml 代碼
- <navigator url="../orderForm/orderForm?form_id=1">
在接收頁面的 js 中寫
- onLoad:function(options){
- this.setData({
- Form_id:options.form_id
- })
- }
這樣就接收到傳過來的值了。
本地存儲(chǔ)傳值: 傳值頁面的 js 中寫
- // 把選中的商品 id(cartIdString)放入本地存儲(chǔ) 供支付頁面使用
- wx.setStorage({
- key: 'cartIdString',
- data: cartIdString,
- success:function(res){
- console.log('sucess')
- }
- })
- // 把選中的商品 總價(jià) 放入本地存儲(chǔ) 供支付頁面使用
- wx.setStorage({
- key: 'total',
- data: that.data.total,
- success: function (res) {
- console.log('sucess')
- }
- })
接收頁面的 js 中寫
- onReady:function(e){
- var that = this;
- // 給后臺(tái)返回購(gòu)物車頁面中被選中商品的 id
- wx.getStorage({
- key: 'cartIdString',
- success: function (res) {
- console.log(res.data)
- }
- })
- // 返回購(gòu)物車頁面中被選中商品的 總價(jià)
- wx.getStorage({
- key: 'total',
- success: function (res) {
- that.setData({
- total: res.data
- })
- }
- })
⒋request請(qǐng)求數(shù)量 整個(gè)小程序在運(yùn)行時(shí),同時(shí)存在的 request 請(qǐng)求數(shù)量限制在5個(gè)。解決辦法是在頁面出棧時(shí)將該頁面的所有 request 請(qǐng)求全部銷毀。 先給每一個(gè) request 請(qǐng)求賦給一個(gè)變量,然后在 onUnload 事件中用 requestTask.abort() 方法將其銷毀。
js 代碼
- onLoad: function () {
- var that = this;
- var a = wx.request({
- url: 'http://192.168.200.146:8080/trwl/xcx/selcar',
- method: 'GET',
- dataType: 'json',
- success: function (res) {
- that.setData({
- carts:res.data
- })
- that.sum()
- },
- fail: function (res) { },
- complete: function (res) { },
- })
- },
- //將 request 進(jìn)行銷毀
- onUnload: function () {
- requestTask.abort();
- a.abort();
- }
5.往后臺(tái)傳求組時(shí)不能直接以Array的格式傳,需要將其轉(zhuǎn)換成字符串格式 代碼如下:
- var cartIdArray = [];
- var cartIdString = '';
- var carts = this.data.carts;
- for(var i=0;i<carts.length;i++){
- if(carts[i].ch){
- cartIdArray.push(this.data.carts[i].cartId)
- }
- }
- for (var i = 0; i < cartIdArray.length; i++) {
- cartIdString += cartIdArray[i] + ",";
- }