1.音乐播放器模块问题:
当相邻的两个资源都是音乐资源的时候,使用wx:if无法再次触发声明周期函数
wxml
<v-music wx:if="{{classic.type == 200}}"
img="{{classic.image}}"
content="{{classic.content}}"
title="{{classic.title}}"
src="{{classic.url}}" />
index.js
attached: function() {
this._recoverPlaying()
this._monitorSwitch()
},
改写方法依然使用hidden,同时使用observer监听属性值得改变
<v-music hidden="{{classic.type != 200}}"
img="{{classic.image}}"
content="{{classic.content}}"
title="{{classic.title}}"
src="{{classic.url}}" />
index.js
properties: {
src: {
type: String,
observer: function(newData, oldData) {
this._recoverStatus()
this._monitorSwitch()
}
},
title: {
type: String
}
},
2._recoverStatus判断逻辑简化:
仅需要保证:音乐没有暂停且src与当前src相同时 playing为true
_recoverStatus: function() {
if (!mMgr.paused && (mMgr.src == this.data.src)) {
//音乐没有暂停 播放的是当前页面的音乐
this.setData({
playing: true,
rotation: 'rotation'
})
} else {
this.setData({
playing: false,
rotation: ''
})
}
},