解决微信小程序组件mp-video-swiper的视频顺序混乱问题

问题描述:当测试视频数很少的时候,id和视频索引很像,就容易搞混
当上下滑动视频的时候,activeId是当前一条数据库记录的id字段,而不是这条数据库记录的index。而且微信小程序只输出了activeId
当我们使用videoslist[activeId-1]来获取当前视频的时候,这种取法就是错误的。activeId-1不是index。
此时修改源代码:video-swiper 中的index.js的168行,
改之前:
this.triggerEvent('change', { activeId: curQueue[current].id });
改之后:
this.triggerEvent('change', { activeId: curQueue[current].id,current_video:curQueue[current] });

这样就可以在change方法中得到当前视频记录数据了。(不需要关心它的索引)

var active_id = e.detail.activeId

var current_video = e.detail.current_video

因为只有在change方法调用后才拿到当前视频数据,所以current_video这个数据需要初始化,=videolist[0],

原先设想在页面中使用{{videoslist[index].content}},因为没有索引就无法使用,我们直接用

{{current_video.content}}

上面改完后视频顺序正确了,却发现播放器从第二个视频开始,接着改。
video-swiper index.js  151行_this.playCurrent(0);//1改成0

修改index.wxml 第7行   current="0"  //1改成0

改完上述三处后在调试暂停的时候又有问题,就是第一个视频无法暂停,后面的都可以,找了半天又有个地方改下

index.js 128行 _last=0//1改成0

最后也是最重要的一个地方就是他的源码有个地方有问题,那就是

this.triggerEvent('change', {

            activeId: curQueue[current].id,

            current_video: curQueue[current]

          });

他的位置不对,不应该放前面,应该放后面,像这样

this.setData({

            curQueue: curQueue,

            circular: circular

          });

          this.triggerEvent('change', {

            activeId: curQueue[current].id,

            current_video: curQueue[current]

          });

          this.playCurrent(current);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值