scroll view 关于上下拉刷新在升级过程中有不少问题。文档也写的比较糟糕。甚至里面介绍了下拉功能,下面tip又说明要用page的下拉刷新代替,scrollview不能复位之类(文档很烂一直是难受点),目前最新版本下拉自带可以,上拉要自己写。代码供参考: WXML <scroll-view class="G_SC_V" style="height:{{mHeight}}px" lower-threshold="100" refresher-threshold='50' refresher-enabled='true' refresher-triggered ="{{isMoveToUp}}" bindrefresherrefresh ="bindLoadingNew" bindscrolltolower="bindLoadingMore" enable-flex='true' scroll-y="true" > .....上拉控件(下拉控件不要写,refresher-enabled='true'设成true系统自带。) <view wx:if='{{isMoveToDown}}'> <view class="weui-loading__wrp"> <view class="loading wx_dot_loading"></view> </view> </view> JS: bindLoadingMore() { console.log('滑到底了,开始加载更多'); var that = this; //setTimeout里会用到, that.setData({ //MoveToDow触发 isMoveToDown: true }) setTimeout(function() { //MoveToDow 时间限制 that.setData({ isMoveToDown: false, }) }, 1500) }, bindLoadingNew() { console.log('滑到顶了,开始加载更多'); var that = this; //setTimeout里会用到, that.setData({ //MoveToUp触发 isMoveToUp: true }) setTimeout(function() { //时间限制 that.setData({ isMoveToUp:false }) }, 1500) }
最新文档scrollview下拉刷新问题,下拉后不能自动复位?引用了官方的自定义刷新配置 [图片] 页面触发了bindrefresherrefresh方法,自己的程序也请求完数据了,但页面一直停在刷新的状态 [图片] 如何让其自动复原
2020-12-19这确实是个问题,并且有现实需要。比如编辑页创建新的数据需要加载到返回页面,如果直接带着数据回去,可以减少一次数据库读取。使用prevPage变量,进行上一页setData可解决。 let tempPage = getCurrentPages(); // 当前页变量 let prevPage = tempPage[tempPage.length - 2]; // 上一页变量 // 这里给要打开的页面传递数据. this.data.PMCOIList.unshift(funcPra.PMCOI) //新生成的数据,加到数据头 传给前一页 prevPage.setData({ PMCOIList: this.data.PMCOIList, //对前一页数据渲染 }) wx.navigateBack({ //返回前一页 delta: 1})
wx.navigateBack 是否可以增加对自定义传参的支持?wx.navigateBack 目前只能控制返回几层,因为小程序最大支持打开10级页面,实际有类似以下场景(目前全部使用 navigateTo 打开): 用户A主页 -> 评价详情1 -> (点击头像进入)用户A主页 -> 评价详情2 …… 如果能支持 navigateBack 传递自定义参数,就不用一直新开页面,可以自行判断使用返回方法,在 onLoad 或 onShow 生命周期获取新的参数,这将会大大提升小程序页面跳转的体验。理论上体验可以做到和APP一样支持打开无限层级页面,又不会因为打开太多页面导致内存暴增。希望官方评估考虑。 ---------------------- 突然发现有不少人关心这个问题,我就挖坟补充一下: 我们自己实现了近似小程序页面生命周期的方法,从在跳转动作执行时,先从页面栈中找到目标页面,执行这个方法并传递参数,然后再 back 相对应的层级,用法和 onShow 等等一样 onNavigateBack(options) { } 因为我们的小程序是有一层自己封装的路由,所以这个事情在统一路由层面就完成了,业务开发者不用去关心怎么实现的,还是很通用的。
2020-12-18 通过以下方法解决了,文档理有明确说明:关键帧替代wx.createAnimation。 this.animate(selector, keyframes, duration, callback) this.animate('#animationPOChangeover', [ {rotateY: 0}, {rotateY: 22}, {rotateY: 45}, {rotateY: 65}, {rotateY: 90}, {rotateY: 110}, {rotateY: 135}, {rotateY: 155}, {rotateY: 180}, {rotateY: 155}, {rotateY: 135}, {rotateY: 110}, {rotateY: 90}, {rotateY: 65}, {rotateY: 45}, {rotateY: 22}, {rotateY: 0}, ], 1000, function () { this.clearAnimation('#animationPOChangeover', {rotateY: true }, function () { }) }.bind(this))
有更好的动画实现方法吗?现有方法有两个缺点,大家遇到过吗?动画调试中发现两个问题 : 1, 想做个动画,比如缩放再回到原始大小。需要两步完成。;( 2,分成两步,实际操作中发现,会发生堵塞,动画缩小后回不来了(频繁点击时发生) 代码如下:(哪个大佬帮忙一下呢) var tempPOAnimation = wx.createAnimation({ duration: 200, timingFunction:"ease", }) this.data.animationPOChangeOver = tempPOAnimation tempPOAnimation.scale3d(0.01,0.01,0.01).step() tempPOAnimation.scale3d(1,1,1).step() this.setData({ animationPOChangeover: tempPOAnimation.export(), })
2020-12-08自己解决了(被云函数调用的云函数中是可以实现update的),以下是过程记录: 2020年10月18日 云数据库 update坑非常多,(算是辣鸡了) 1, 数据库权限,首先检查当前数据库的集合是否为第一个选项,所有用户可读,仅创建者可读写,可以通过自定义修改。 2, 检查集合中的字段是否有openid,如果从外部导入的表需要加上openid字段 3, 云函数update的时候,记得在cloud.init({env: ‘环境id’}) 4, 在被调用云函数update可以通过手工传一个openid参数给被调用云函数使用。 5,_id不正确时也有同样情况。我这次问题的本质时 _id ="XXXXX" , 实际上代码写得不对,变成_id =""XXXXX"",调试的时候没有发现,然后晕了。
云函数中调用云函数,OPENID不存在,并且数据库update不成功,怎么解决?openid 通过wxContent可以获得。但在被调用的云函数中,上下文没有openid, 这可能是造成数据库update 不成功(stats.updated 为 0)的原因(权限问题,通过自定义权限也不行)。也许通过解决被调用云函数的openi赋值就可以了,有谁知道如何解决吗?
2020-10-18