小程序项目,返回到列表页如何做到不刷新页面但能更新数据
发布于 5 年前 作者 cma 966 次浏览 来自 问答

小程序项目,返回到列表页如何做到不刷新页面但能更新数据?

小程序项目结构如下:

进入小程序,首先到“项目列表”页面,项目列表页面有创建项目,修改项目,删除项目功能,每个项目list有挂该项目下的方案总数,点击该项目list进入“方案列表”页面,方案列表有创建方案,方案编辑,删除方案功能,每个方案list挂有该方案的计算状态及计算结果信息,点击该方案list进入“方案编辑”页面,方案编辑页面有方案计算,方案保存等按钮。

请教一下各位开发大大们是怎么处理这种情况的?

5 回复

如你所说,想要在不刷新此页面的情况下更改数据,那么就要在上一个页面操作此页面的数据,当返回时页面已经渲染完毕,这样就达到了你的效果

加入此页面渲染的列表为goods,那么在上一个或多个页面可以

let pages = getCurrentPages();

let goods = pages[pages.length - 2].data.goods;//其中数字1代表当前页面,每加1则是页面栈下一层

/*

此处为对数据的操作,如:let newGoods = goods.slice(0,1);

*/

pages[pages.length - 2].setData({

goods:newGoods

})

这样就实现了

可以用通知广播

比如有投票选手列表页面,显示每个选手的得票数,在onLoad的时候监听VOTE_ACTIVITY_ADD事件

Event.listen(Event.VOTE_ACTIVITY_ADD, this.addGainVotes.bind(this), this)

进入到选手详情页之后如果给该选手点赞就发送事件

Event.emit(Event.VOTE_ACTIVITY_ADD, playerId)

这样列表页就可以调用addGainVotes方法给那个选手加一票而不用再重新获取列表数据,返回时看到的就是更新的数据了

我是这么做的,列表页有个isShowPage,默认是false,当获取到列表数据后改成true,获取列表数据前对isShowPage做判断,如果是false,有加载框,否则不显示加载框。从列表页到详情页使用的是navigateTo,所以在返回到列表页后重新获取列表数据,就可以做到无感知的刷新页面。

同问,我的是列表页有三级分类,一级下面有二级分类,二级分类下面有三级分类。如果说点开某一个三级分类下面第3页的某一商品进入商品详情页,在商品详情页进行了加购物车处理,那么他在返回列表页的时候,又不想让他重新加载数据回到默认的一级分类下第一个二级分类下的第一个三级分类,只想让他停留在当前位置,又想让商品的加购数量增加。我想到一个办法就是把列表数据存在本地,在详情页操作的时候再把本地的对应的字段手动更改掉。可是这样又会造成分类列表数据不能响应更新,如果此时有人在后台删除增加了数据,小程序这边不会被更新。这到底是应该怎么处理更好呐

回到顶部