this.data的值在一份文件中,值不一样。
来源:

慕粉111045527
2017-01-07
老师你好: var postId = this.data.currentPostId; var postData = postsData.postDataList[postId]; var musicVO = postData.music; var _this = this; if (!_this.data.isPlayingMusic) { wx.playBackgroundAudio({ dataUrl: musicVO.url, title: musicVO.title, coverImgUrl: musicVO.coverImg, success: function (res) { // success _this.setData({ isPlayingMusic: true, }); }, fail: function () { // fail }, complete: function () { // complete wx.onBackgroundAudioPause(function (event) { _this.setData({ isPlayingMusic: false, }); app.globalData.g_isPlayingMusic = false; app.globalData.g_isPlayingMusicPostId = null; }); wx.onBackgroundAudioPlay(function (event) { _this.setData({ isPlayingMusic: true, }); app.globalData.g_isPlayingMusic = true; app.globalData.g_isPlayingMusicPostId = postId; }) } }); }
在 var _this = this; 处 打印 _this.data 的值是当前页面正确显示的json数据。 但是点击播放按钮,到了onBackgroundAudioPlay 回调的时候,_this.data 的值就变成了 上一个打开的页面的json数据了。如果再次点击播放继续到onBackgroundAudioPlay 回调,此时_this.data的值又正确了。
另外,当第一次打开一个页面,点击播放按钮的时候,不会走到onBackgroundAudioPlay的回调。新打开页面播放,或者再次点击当前页播放按钮才会成功回调到onBackgroundAudioPlay 。 只发生在小程序音乐首次播放时。
2个问题,老师帮忙解答一下呀
写回答
4回答
-
7七月
2017-01-07
知乎里有一篇文章,音乐播放,看看能不能解决你的问题。
00 -
7七月
2017-01-07
新版本已经改掉了,页面会被unload
00 -
7七月
2017-01-07
老版本里有一个问题,就是 post-detail页面不会被卸载,所以多次进入后,有可能会多次触发 onBackgroundAudioPlay 。这样就造成了this.data会有几个不同的值,但似乎也不是你说的这个问题。
00 -
7七月
2017-01-07
这个确实只看代码看不出来啊,得调试。你可否按照课程一步步的来?还是说你改动了课程的代码?还有就是建议下载项目源文件,对比一下。在同学里下载。
012017-01-07
相似问题