搜索歌曲时,点击歌手可以正常播放。点击歌曲,获取不了歌曲url,导致不能正常播放

来源:10-9 搜索页面suggest组件开发(6)

baobaojiayou

2018-12-21

在这里输出歌曲item

selectItem (item) {
 if (item.type === TYPE_SINGER) {
   const singer = new Singer({
     id: item.singermid,
     name: item.singername
   })
   this.$router.push({
     path: `/search/${singer.id}`
   })
   this.setSinger(singer)
 } else {
   console.log(item)
   this.insertSong(item)
 }

http://img.mukewang.com/szimg/5c1c9181000156d918290965.jpg

actions代码:也没有发现错误

// 拿到state的原因:最终要拿到playlist currentIndex sequenceList
export const insertSong = function ({commit, state}, song) {
 // state.playlist.slice() 返回state.playlist的一个副本 因为我们不能再mutations回调函数外修改 [vuex] Do not mutate vuex store state outside mutation handlers.
 let playlist = state.playlist.slice()
 let sequenceList = state.sequenceList.slice()
 // currentIndex只是playlist的当前索引 不是sequenceList的索引
 // state.currentIndex 是个值类型 修改变量不会有问题 所以不用副本
 let currentIndex = state.currentIndex
 // 记录当前歌曲
 let currentSong = playlist[currentIndex]
 // 查找当前列表中是否有待插入的歌曲并返回其索引 顺序一定要在插入之前
 let fpIndex = findIndex(playlist, song)
 // 因为是插入歌曲,所以索引+1
 currentIndex++
 // 插入这首歌到当前索引位置
 playlist.splice(currentIndex, 0, song)
 // > -1说明已经有这首歌曲 =-1 没有这首歌曲
 // 如果已经包含了这首歌
 if (fpIndex > -1) {
   if (currentIndex > fpIndex) {
     // 如果当前插入的序号大于列表中的序号
     playlist.splice(fpIndex, 1)
     currentIndex--
   } else {
     // 因为歌在fpIndex之前插入 所以pfIndex增加了一位
     playlist.splice(fpIndex + 1, 1)
   }
 }
 // song 应该插入在sequenceList中的位置
 let currentSIndex = findIndex(sequenceList, currentSong) + 1
 // 寻找之前sequenceList里面有没有我们要插入的song
 let fsIndex = findIndex(sequenceList, song)
 // 插入
 sequenceList.splice(currentSIndex, 0, song)

 if (fsIndex > -1) {
   if (currentSIndex > fsIndex) {
     sequenceList.splice(fsIndex, 1)
   } else {
     sequenceList.splice(fsIndex + 1, 1)
   }
 }
 commit(types.SET_PLAYLIST, playlist)
 commit(types.SET_SEQUENCE_LIST, sequenceList)
 commit(types.SET_CURRENT_INDEX, currentIndex)
 commit(types.SET_FULL_SCREEN, true)
 commit(types.SET_PLAYING_STATE, true)
}

写回答

1回答

baobaojiayou

提问者

2018-12-21

已解决,没有使用processSongsUrl函数

0
5
colourful97212
回复
慕mio远山
我调用了processSongsUrl方法,可是返回歌曲获取不到url,你解决了么?
2019-05-05
共5条回复

Vue2.0高级应用教学实战,开发企业级移动端音乐Web App

Vue.js高级知识应用大集合,实战企业级APP,教你搞定组件化开发。

5432 学习 · 3804 问题

查看课程