1、picker从后台动态取值
<picker bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
<view class="picker">
区域:{{objectArray[index].name}}
</view>
</picker>
array: ['环翠区', '高区', '经区', '其他'],
objectArray: [
{
id: 12,
name: '环翠区'
},
{
id: 13,
name: '高区'
},
{
id: 14,
name: '经区'
},
{
id: 15,
name: '其他'
}
],
},
bindPickerChange: function(e) {
console.log('picker发送选择改变,携带值为', tobjectArray[e.detail.value]) //这个值只是角标的顺序值
console.log('picker发送选择改变,携带值为', this.data. objectArray[e.detail.value].id) //这样才能取到真正的ID值
}
2、wx.request从后台取值成功不能用 that.setData({.......})会报错"this.setData is not a function;at api request success callback function"
必须写成var
that=
this
;
完整例子:
data: {
logs:[]
},
onLoad:function(){
this.getdata();
}
getdata:function(){//定义函数名称
var that=this; // 这个地方非常重要,重置data{}里数据时候setData方法的this应为以及函数的this, 如果在下方的sucess直接写this就变成了wx.request()的this了
wx.request({
url:'http://www.phonegap100.com/appapi.php?a=getPortalCate',//请求地址
data:{//发送给后台的数据
name:"bella",
age:20
},
header:{//请求头
"Content-Type":"applciation/json"
},
method:"GET",//get为默认方法/POST
success:function(res){
console.log(res.data);//res.data相当于ajax里面的data,为后台返回的数据
that.setData({//如果在sucess直接写this就变成了wx.request()的this了.必须为getdata函数的this,不然无法重置调用函数
logs:res.data.result
})
},
fail:function(err){},//请求失败
complete:function(){}//请求完成后执行的函数
})
},
wxml页面:
<view wx:for="{{logs}}" wx:for-item="value">
{{value.catname}}
</view>
3、界面A.wxml参数值传递
<view class="nav_top_items" bindtap="switchTab " data-id="{{item.id}}">
逻辑处理A.js里发送
// 跳转至详情页
navigateDetail: function(e){
wx.navigateTo({
url:'../detail/detail?artype=' + e.currentTarget.dataset.id
})
},
逻辑B.js接收参数值
onLoad: function (options) {
this.setData({
id:options.id
})
},
4、小程序参数传值
现在已知传递参数的方法只找到三种,先总结下:
1.APP.js
我把常用且不会更改的参数放在APP.js的data里面了.在各个page中都可以拿到var app = getApp();
app上就可以拿到存在data中的参数.
2. wx.navigateTo({})中URL携带参数
demo中已经写出:
wx.navigateTo({
url: "../newpage/newpage?infofromindex=" + this.data.infofromindex,
});
传值:在navigator的属性url后拼接?id(参数名字)=要传递的值 (如果多个参数用&分开 &name=value&.......)
3.wx.setStorage(OBJECT) 数据缓存
微信开发文档中的数据缓存方法:
①存储数据
try {
wx.setStorageSync('infofrominput', this.data.infofrominput)
} catch (e) {
}
②获取数据
//获取
wx.getStorage({
key: 'infofrominput',
success: function (res) {
_this.setData({
infofromstorage: res.data,
})
}
})
5、从一个JS引用另一个JS中的方法
先在当前JS中引用
var fileData = require('../../utils/data.js')
被引用的js需要暴露接口才可以被引用到,不然会报{{page}}错误
/*
* 对外暴露接口
*/
module.exports = {
getBannerData : getBannerData,
getpockrooms:getpockrooms
}