微信小程序,上拉加载更多数据

数据例子:{

    class_icon: "可以忽略属性",
    class_text: "忽略",
    id: 9

},
1.每次下拉请求数据,然后将请求的数据动态绑定
上面第一步我可以做到!重点在第二点!
2.重点!我应该如何动态添加数据,在原有的数据基础上增加数据?
我是只想添加多个数据例子而不是指在数据例子中添加数据!

阅读 3.9k
2 个回答

下拉加载的基本思想:

  1. 触发下拉加载事件

  2. 进行请求返回数据列表

  3. 添加到数据中。

由于小程序使用的是双向绑定,因此只需要更新js中的数据就可以,wxml for总会自动更新循环出你需要的内容。

首先下面的数据(就是你的数据例子,应当存在数组中,即使一开始默认只有一个数据例子,也应当存放在数组中)

{
    class_icon: "可以忽略属性",
    class_text: "忽略",
    id: 9
},
[
{
    class_icon: "可以忽略属性",
    class_text: "忽略",
    id: 9
},
]

wxml 中输出的时候,使用 for循环输出数据(即使一开始只有一个),因此当你把新的返回的数据里子列表得到后,加入这个数组中即可,

举例: 一开始你有一个dataList,存放着你的数据例子

dataList = [
{
    class_icon: "可以忽略属性",
    class_text: "忽略",
    id: 9
}
];

请求会数据列表后,处理成数组的形式:

比如你请求回来的数据如下:

[
{
    class_icon: "可以忽略属性",
    class_text: "忽略",
    id: 10
},
{
    class_icon: "可以忽略属性",
    class_text: "忽略",
    id: 11
},
{
    class_icon: "可以忽略属性",
    class_text: "忽略",
    id: 12
}
]

js 中使用 setData() 更新到 dataList 中.

dataList = dataList.contact(list);// list 为上面你请求回来之后处理过的数据(转数组的)

然后使用 setData 更新 dataList 即可,这样你的wxml 的循环就会自动的输出你添加上的这些数据列表,依次执行下拉操作即可

[更新]

现在你已经有一个数组了, 比如下面的 list

Page({
data: {
    list:[]
  }
})

你的API会返回数据,返回的数据我不知道你怎样的形式,是json字符串还是什么?

把你的API返回的数据处理成javascript能够处理的数组,比如放在 responseList 中.

现在你需要将 responseList的数据追加在list中。

    this.setData(list,this.data.list.concat(responseList));

只有使用 setData 设置的数据才会立刻在绑定的视图中进行响应。
注意 如果你的 上面这行操作是在http请求的回调中的,不能直接使用this,需要在前面声明var _this=this;

然后这样子使用:

_this.setData(list,_this.data.list.concat(responseList));

setDat数据过多时如何解决?图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题