百度小程序的不同:
1: initActive从onload放到onready中
2: bindtap='{{childTickeData.freeadd?"childticket":""}}',语法错误。会导致页面加载不出来,而且也不报任何错。
3:使用搬家工具,支付api名称转换不对应,还是微信的,应该改成百度的。
4:自定义属性不能出现null或者“”,否者默认为true
5:给图片的src属性赋值,使用了三元运算符,src不能用“”,否者图片不换
6:input输入框与其他元素如果在同一区域,则同一区域的其他点击事件无效,建议不要重合。如果是type=“number”,在重复移除焦点获取焦点之后,输入框的值会消失,可使用bindfocus重新给输入框赋值
7:s-for:应该为数组,数字无效
8:
var lettercity_success = function (data) { if (data.length != 0) { var catchdata = data.slice(0, 2); var queryshowcitys = []; for (var i = 0; i < data.length; i++) { var param = that.clone(data[i]); if(param.departures.length>3){ param.isshowall = false; }else{ param.isshowall = true; } param.departures = param.departures.slice(0, 3); queryshowcitys.push(param); } that.setData({ lettercityarr: data, queryshowcitys: queryshowcitys }); } else { that.setData({ lettercityarr: [] }); that.setData({ islettercityshow: false }); } };
在同一个方法中,如代码中如果要分别用data和queryshowcitys 给两个属性赋值,queryshowcitys 获取值最好使用clone的方式。即使先用setdata给lettercityarr赋值,再执行逻辑给queryshowcitys指赋值,也不行,依然会造成data的值发生改变。以下是clone代码:
const clone = function (data) { let model = {}; for (let item in data) { console.log(Object.prototype.toString.call(data[item])); if (data[item] instanceof Array) { model[item] = new Array(); for (let i = 0; i < data[item].length; i++) { model[item].push(this.clone(data[item][i])); } } else { model[item] = data[item]; } } return model; };
9:页面传值,考虑对值使用encodeURIComponent编码,比如传带有http://,如果不使用编码,则在另一页面接收值会成为http:/。
10:传参数不要使用scope字段,scope,百度小程序页面跳转自带此参数
11:在ios系统中,网络请求的状态码为异常的时候,比如500,550,百度小程序会对返回的结果做处理,看不到服务端返回的具体错误信息。
12:map:通过网络请求拿到坐标,再将地图中心点设置此坐标。需要设置show-location="false"。
在ios系统中还需要处理,bindupdated="updatedMap",地图加上这个事件,在updatedMap方法中判断一下当前地图中心位置是否和预期一样
-
if(this.ischeckedmapcenter==true){//是否检验过中心位置准确 return; } var mapCtxget = swan.createMapContext('myMap'); var that = this; mapCtxget.getCenterLocation({ success: function (res) { if (res.longitude != that.data.curgeocodes.longitude || res.latitude != that.data.curgeocodes.latitude) { var getlongitude = that.data.curgeocodes.longitude; var getlatitude = that.data.curgeocodes.latitude; that.setData({ "curgeocodes.longitude": getlongitude, "curgeocodes.latitude": getlatitude, "ischeckedmapcenter":true }); } } })