微信小程序開發(踩坑篇)

公司最近打算作一個金融項目,分配讓我開始學習微信小程序開發。今天是次日,碰到一些奇奇怪怪的問題,記錄下。html


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------json

不記得幾號寫的了

一、頁面圖片要與該頁面放置在一個文件夾中,不然沒法讀取到。

原先在項目下建了一個image文件夾,打算專門用來放整個項目的圖片的,同級的有個index文件夾。小程序

當我須要在index.wxml裏引入image文件夾裏的圖片時,不管路徑怎麼填,圖片都沒法顯示。後臺顯示說沒法獲取圖片。微信小程序

後來試了在index文件夾下新建了一個image文件夾,而後把該頁面須要的圖片拖進去,在寫對路徑,就成功了。api


二、在框架配置文件app.json中設置全部頁面的背景色不起做用,同時在頁面配置文件中設置也不起做用時,能夠在框架樣式文件app.wxss或頁面樣式文件中設置。

昨天把全部頁面的背景色設置爲了#ffffff(白色),今天想改成#f5f8fa,以下:

 "window" : { "backgroundColor":"#f5f8fa" }

不起效,百度了,換成在app.wxss樣式文件裏設置了下面的代碼,而後就神奇的生效了。服務器

Page { background: #f5f8fa; }

三、在app.js裏:wx.request() 向服務器請求數據是AJAX異步數據請求,直接在AJAX請求裏設置全局變量是設置不了的,也沒法調取這個數據,須要最開始設置var that=this ,而後再AJAX請求裏寫that.globalData.變量名 = 變量值。且,在單獨的頁面裏申明變量也是無效的,必定要在app.js裏申明globalData。


特別注意:wx.request()是AJAX異步數據請求,在這裏面用this.globalData設置變量不表明這個this就是指小程序的app(即這個變量不是全局變量),這個變量仍舊是在這個AJAX裏的局部變量。此時,須要在最頂部加入var that = this,同時在AJAX裏用that替代this。見下面鮮紅色的代碼。

var that = this;
wx.login({
success: function (res) {
if (res.code) {
//發起網絡請求
//向服務器請求數據
wx.request({
url: "https://api.xxxxx.com/",
header: {
'content-type': 'application/json'
},
success: function(re){
console.log(re);
console.log(re.data.list.goods_list[ 0].f_price);
that.globalData.price = re.data.list.goods_list[ 0].f_price;
}
})
console.log( "登陸成功!");
} else {
console.log( '獲取用戶登陸態失敗!' + res.errMsg);
}
}
});

而後:
globalData: {
price: 0
}

再接着再當前頁面的js文件裏調用就能夠了:
Page({
data:{
price: ''
},
onLoad: function () {
var that = this;
that.setData({price: app.globalData.price})
}
})


=============================================================================================================================================

2017/12/21

四、使用<navigator>標籤/wx.navigateTo/wx.redirectTo不能跳轉到放入小程序底部navigationBar裏面的頁面。

我在首頁展現了一些產品,放了一個<button>MORE<button>,想讓用戶點擊此按鈕時,跳轉到所有產品頁面。使用了下面三種方法,都無效。

方法一:
<navigator url="../product/product><button>MORE<button></navigator>
方法二:
<button bindtap="gotoProduct">MORE<button> gotoProduct: function () { wx.navigateTo({ url: "../product/product" }) }
方法三:
<button bindtap="gotoProduct">MORE<button> gotoProduct: function () { wx.redirectTo({ url: "../product/product" }) }