開發小程序過程當中會遇到不少坑,時間長了都忘記了,先把能想起來的先記下來,有空再補充。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。