建立playlist.vue 组件,在player.vue 组件中引用,点击迷你播放器的播放列表按钮由下至上弹出这个层,所以在player.vue 播放器组件中引用

在playlist.vue 组件中首先设置对外的方法可以控制该组件的显示隐藏,通过mapGetters 获取歌单数据

播放列表功能操作:

  当前播放歌曲显示正确的icon

  点击当前歌曲播放该歌曲,对应相应的icon ,列表滚动到最上面

  删除当前单条播放歌曲,(判断当前歌曲是否为正在播放的歌曲,重置数组)

  清空整个播放列表(清空时confirm 做拦截提示)

  切换播放模式(逻辑与player组件 共享)

  收藏该歌曲(待续)

  添加歌曲到队列(待续)

// actions.js

export const deleteSong = function({commit,state},song){
let playlist = state.playList.slice();
let sequenceList = state.sequenceList.slice();
let currentIndex = state.currentIndex;
let pIndex = findIndex(playlist,song);
playlist.splice(pIndex,1);
let sIndex = findIndex(sequenceList,song);
sequenceList.splice(sIndex,1); if(currentIndex > pIndex || currentIndex == playlist.length){
currentIndex--;
} commit(types.SET_PLAYLIST,playlist)
commit(types.SET_SEQUENCE_LIST,sequenceList)
commit(types.SET_CURRENT_INDEX,currentIndex) // 如果删除列表为空
if(!playlist.length){
commit(types.SET_PLAYING_STATE,false)
}else{
commit(types.SET_PLAYING_STATE,true)
} } export const deleteSongList = function({commit}){
commit(types.SET_PLAYLIST,[])
commit(types.SET_SEQUENCE_LIST,[])
commit(types.SET_CURRENT_INDEX,-1)
commit(types.SET_PLAYING_STATE,false)
}

vue-music 关于playlist (底部播放列表组件)的更多相关文章

  1. Vue 如何实现一个底部导航栏组件

    参考网址: https://www.jianshu.com/p/088936b7b1bd/ Vue 如何实现一个底部导航栏组件 可以看到父组件是知道我点击了底部TabBar的哪个item的. 实现 实 ...

  2. Vue学习(2)---v-指令和组件

    Vue中的指令 Vue中以带有前缀V-的属性被称为指令(带有v表示他们是Vue提供的特殊attribute) 一个v-bind的例子 <div id="app" v-bind ...

  3. vue.js入门(3)——组件通信

    5.2 组件通信 尽管子组件可以用this.$parent访问它的父组件及其父链上任意的实例,不过子组件应当避免直接依赖父组件的数据,尽量显式地使用 props 传递数据.另外,在子组件中修改父组件的 ...

  4. Vue.use自定义自己的全局组件

    通常我们在vue里面使用别人开发的组件,第一步就是install,第二步在main.js里面引入,第三步Vue.use这个组件.今天我简单的也来use一个自己的组件. 这里我用的webpack-sim ...

  5. vue.js基础知识篇(6):组件详解

    第11章:组件详解 组件是Vue.js最推崇也最强大的功能之一,核心目标是可重用性. 我们把组件代码按照template.style.script的拆分方式,放置到对应的.vue文件中. 1.注册 V ...

  6. Vue深度学习(6)- 组件

    使用组件 在Vue中,可以用 Vue.extend() 创建一个组件构造器: var MyComponent = Vue.extend({ template:'..........' //选项 }) ...

  7. vue 2.0 路由切换以及组件缓存源代码重点难点分析

    摘要 关于vue 2.0源代码分析,已经有不少文档分析功能代码段比如watcher,history,vnode等,但没有一个是分析重点难点的,没有一个是分析大命题的,比如执行router.push之后 ...

  8. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十║Vue基础终篇:传值+组件+项目说明

    缘起 新的一天又开始啦,大家也应该看到我的标题了,是滴,Vue基础基本就到这里了,咱们回头看看这一路,如果你都看了,并且都会写了,那么现在你就可以自己写一个Demo了,如果再了解一点路由,ajax请求 ...

  9. Vue一个案例引发的递归组件的使用

    今天我们继续使用 Vue 的撸我们的实战项目,只有在实战中我们才会领悟更多,光纸上谈兵然并卵,继上篇我们的<Vue一个案例引发的动态组件与全局事件绑定总结> 之后,今天来聊一聊我们如何在项 ...

随机推荐

  1. 挖一挖unsigned int和补码

    文章要讨论的是两部分: 1. 原码,反码和补码. 2. short, unsigned short, int, unsigned int, long, unsigned long的表示及转换 1. 原 ...

  2. 双向数据绑定实现之Object.defineProperty

    vue.js利用的是es5的 defineproperty 特性实现的双向数据绑定,了解一下基本原理. 举例 var person= {}; Object.defineProperty(person, ...

  3. 在centos中使用rpm安装包安装jenkins

    jenkins下载:http://pkg.jenkins-ci.org/redhat/ 下载rpm包到本地 在linux下使用rpm包安装命令: sudo rpm -ih jenkins-1.562- ...

  4. 状压DP的总结

    状压dp的标志 ①数据小 ②通过题目所给出的条件以后得到的特征集合小 一:CF259div2 D: 题目大意:保证b[i]中每个数互质,给出a[i],然后求1~n的abs(a[i]-b[i])最小.a ...

  5. Codeforces 671B/Round #352(div.2) D.Robin Hood 二分

    D. Robin Hood We all know the impressive story of Robin Hood. Robin Hood uses his archery skills and ...

  6. Jmeter 自动化脚本录制-Badboy

    1. Badboy 录制操作(输入URL其余和平常操作一毛一样). 2. 保存结果,并Export to Jmeter,退出保存. 3. 导入已录制好的文件,添加监听器查看结果. 一般的监听器有(查看 ...

  7. 【NOIP】提高组2016 蚯蚓

    [题目链接]Universal Online Judge [题解]本题最大的特点在于从大到小切以及切分规则一致,都是切成px和x-px. 由这两个特点很容易得到结论,后切的蚯蚓得到的px一定比先切的蚯 ...

  8. 【51NOD】斜率最大

    [题解]通过画图易得结论:最大斜率一定出现在相邻两点之间. #include<cstdio> #include<algorithm> #include<cstring&g ...

  9. Spring注解概览(数漫江湖)

    从Java5.0开始,Java开始支持注解.Spring做为Java生态中的领军框架,从2.5版本后也开始支持注解.相比起之前使用xml来配置Spring框架,使用注解提供了更多的控制Spring框架 ...

  10. Computer(HDU2196+树形dp+树的直径)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196 题目: 题意:有n台电脑,每台电脑连接其他电脑,第i行(包括第一行的n)连接u,长度为w,问你每 ...