开发小程序过程当中会遇到不少坑,时间长了都忘记了,先把能想起来的先记下来,有空再补充。javascript
坑一:函数没有返回值java
先上代码:小程序
Page({
data: {
name:""
},api
onLoad: function (options) {
var name = this.myFunc();
this.setData({"name":name});
},函数
myFunc:function(){
return "test";
}
})this
之前写这段代码时发现name为undefined。无奈只能改为回调的方式:对象
Page({
data: {
name:""
},ip
onLoad: function (options) {
var oThis = this;
this.myFunc(function(name){
oThis.setData({"name":name});
});
},开发
myFunc:function(fn){
fn("test");
}
})io
坑二:Data中的数据必须用setData
贴代码:
Page({
data: {
cond:{
pageIndex:0
}
},
onLoad: function (options) {
var oThis = this;
var cond=this.data.cond;
cond.pageIndex++;
$.api("api路径",{pageindex:pageindex})
.then(function(value){
if( this.data.cond.pageIndex>0){
//do something
console.log("pageindex="+this.data.cond.pageIndex);
}
});
}
})
原由是pageIndex只是查询参数,跟UI不要紧,因此不想用setData,而是直接修改。结果发现它的值根本没有变化,也就是对cond的引用不是引用,而是传值!当var cond=this.data.cond时,cond实际上是this.data.cond的副本,不是对象引用。
从坑中能够看出小程序的语法只是像javascript,其实彻底不是javascript。