微信小程序开发(踩坑篇)

公司最近打算作一个金融项目,分配让我开始学习微信小程序开发。今天是次日,碰到一些奇奇怪怪的问题,记录下。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" }) }