微信小程序——坑坑坑(会不断更新)
2018-04-08 本文已影响24人
Easy_伊
关于页面传值的问题,可以参考这篇哦~
地址:https://www.jianshu.com/p/0135769db89c
一、页面之间通过url传值问题
问题描述:
专门写了个web-view组件用的页面,只需要从其他页面传递webUrl进web-view页面,即可显示web网页。问题是,页面之间url传参的参数中,字符串(webUrl)中的"?"和"="后面的字符会被忽略。嗯,心疼自己一下下。
解决方法:
// 传入web-view页面
wx.navigateTo({
url: '../../pages/web-view/web-view?webUrl=' + escape(webUrl),
})
//从web-view页面中取出与赋值
onLoad: function (options) {
this.setData({ url: unescape(options.webUrl) });
}
二、页面函数传参
问题描述:又是一把辛酸泪。列表数据,点击列表中的某一项,需要将该项数据传入函数中,想当然的用上了"函数名(实参)"的方式。结果就是狗带
解决方法:
/*
wxml中,用data-*的自定义属性方法,将数据定义到元素中。名字随便取,data-开头就好。
!!要注意,wxml中定义的名称是data-user-phone,取值是用userPhone。
catchtap是不冒泡的单击
*/
<view class="itemRow" data-user-phone="{{phone}}" catchtap="callPhone">
<text>客户电话:<text class="phone">{{phone}}</text></text>
</view>
//对应的函数取值
callPhone: function (event) {
wx.makePhoneCall({
phoneNumber: event.currentTarget.dataset.userPhone
})
},
三、POST请求方式
小程序的请求方式,默认是GET。使用POST方式需要加入“method:"POST”,POST一定是大写。POST方式的“header”与GET不同,见下。另外主要要在data中的key,要加上引号。之前写成data:{u:xxx},请求出错。
wx.request({
method:"POST",
url: config.url.serviceUrl + 'service/LoginServlet',
data: {
"u": _this.data.username,
"p": password == _this.data.password ? _this.data.password:MD5.md5(_this.data.password)
},
header: {
'content-type': 'application/x-www-form-urlencoded' // 默认值
},
success: function (ret) {},
fail: function () { },
complete: function (ret) { }
})
四、服务端图片更换后,小程序端图片不变
写代码的时候,碰到一些图片是需要放在服务端上。由于图片不会增删,只会修改,不需要写接口去获取图片,因此是采用前端固定服务端图片地址的方式访问图片。但是由于服务端图片地址不变,小程序并不会更新这些图片,只会采用最初打开小程序时,缓存的图片。。。就是这么坑爹。
解决方式:在服务端图片地址后,加个随机数,保证每次图片地址都不一样(其实指向的地址是一样的,只是骗骗小程序)
?’ + Math.random();
这种方式,图片地址需要放在js中,直接在image标签中写Math.random()方法是无效的,会得到一个undefined(因为我习惯react的JSX语法了。。。有些简单的数据处理会放到虚拟dom结构中)