uni-app开发日志[2019090601]:开发上拉加载时的一些情况整理

这几天在制作上拉加载,这里总结一下。

  1. 通过console.log打印待检验数据,如果提示该数据为__ob__: Observer,则可使用下面的方式强制转换
//先转为字符串,再转为json
JSON.parse(JSON.stringify(oldData)
  1. 数组、json不同的合并方式

数组

//使用时注意先后
oldData = oldData.concat(newData);

json

//正确方法
oldData = Object.assign({},oldData,newData);

//错误方法
oldData = Object.assign(oldData,newData);

注释:
如果用错误方式写,则oldData永远都是最新内容
这是因为assign的第一个参数是目标对象,后面的才是源对象

Object.assign(target, ...sources);
  1. 如果服务端传来的数据为json,而该json的键名为数字,则自动按照从小到大顺序排列
//服务端传来的数据为
{
	3:{"a","b"},
	8:{"a","b"},
	7:{"a","b"},
}
//客户端获取的数据为
{
	3:{"a","b"},
	7:{"a","b"},
	8:{"a","b"},
}

因此可能出现服务端明明是倒序排列,到了客户端却是正序的情况,这样上拉加载后,新加载的内容可能跑到上面去了。

  1. 上拉加载有两种情况,一种是view,一种是scroll-view。

view在配置里写

export default {
	onReachBottom(){
		this.getData(1);
	},
	methods: {
		getData:function(isnext){
			alert(isnext);
		}
	}
}

scroll-view在组件上激活

<template>
	<view class="main">
		<scroll-view scroll-x="true" scroll-y="true" @scrolltolower="getData(1)">
	</view>
</template>
  1. 测试时如果遇到数据出错,或无法使用系统函数时,很可能是数据格式错了,可利用console.log按条比对数据格式是否与设计一样,耐心~~
console.log("最新数据,array");
console.log(newData);

console.log("旧数据,json");
console.log(this.oldData);

oldData = oldData.concat(newData);
console.log("合并新旧数据,object");
console.log(oldData);
  1. PHP在将array转成json时,可能最外围是方括号,可能是花括号,这取决于数组起始键名是否为0
//结果为["a","b","c"]
echo json_encode(array(0=>'a',1=>'b',2=>'c'));
//echo json_encode(array('a','b','c')); 

//结果为{"1":"a","2":"b","3":"c"}
echo json_encode(array(1=>'a',2=>'b',3=>'c')); 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值