vue2.0 可折叠列表 v-for循环展示的实例


Posted in Javascript onSeptember 07, 2018

先上一张效果图:

vue2.0 可折叠列表 v-for循环展示的实例

以前用angularjs操作基本上都是要取到每个列表的id再循环判断是不是当前点击的列表来显示折叠。

今天在这个项目 https://github.com/IFmiss/vue-music 上看到操作很简单,并没有如此复杂。赶紧记录一下:

折叠列表单独做一个组件,图标是用的iconfont中生成的css链接:myMusicSheetList.vue

<template>
 <div class="sheet-list">
 <div class="sheet-header" @click="toggleSheet">
 <i class="icon iconfont icon-enter" ref="toggleicon"></i>
 <span class="sheet-header-span">{{data_item.name}} <span> ({{data_item.num}}) </span></span>
 <i class="sheet-header-i icon iconfont icon-setup" @click.stop="showSheetMenu(data_item.name)"></i>
 </div>

 <div v-if="showSheets" class="sheet-content" v-for="i in data_item.details">
 <div class="sheet-content-image">
 <img :src="i.details_image" width="50" height="50" style="padding: 5px;overflow: hidden">
 </div>
 <div class="sheet-content-middle">
 <p style="">{{i.details_name}}</p>
 <p style="margin-top: 10px;font-size: 14px;color: #666">{{i.details_num}}首歌曲</p>
 </div>
 <i class="icon iconfont icon-switch" @click.stop="showSheetMenu()"></i>
 </div>
 </div>
</template>
<script>
export default {
 components:{},
 props: {
 item:{
 type:Object
 }
 },
 data(){
 return{
 showSheets:false,
 data_item:{}
 }
 },
 methods:{

//向右的小图标动画
 toggleSheet:function(index){
 console.log(this.$refs);
 this.$refs.toggleicon.style.transform = !this.showSheets ? 'rotate(90deg)' : 'rotate(0)'
this.showSheets = !this.showSheets
 },
 showSheetMenu:function(){
 alert(1111);
 }
 },
 created(){
 this.data_item = this.item;
 },
}
</script>
<style scoped>
.sheet-list{
clear: both;
}
.sheet-header{
height: 30px;background: #e5e5e5;position: relative;
}
.sheet-header i:nth-child(1){
line-height: 30px;position:absolute;
left:10px;
color:#666;
transition:all 0.5s;
}
.sheet-header-i{
line-height: 30px;position: absolute;right: 10px;
}
.sheet-header-span{
left: 40px;font-size: 14px;position:absolute;line-height: 30px;
}
.sheet-content{
position: relative;width: 100%;display: flex;
}
.sheet-content i{
font-size: 26px;position: absolute;right: 10px;top: 50%;transform:translate(0,-50%);
}
.sheet-content-image{
width: 60px;float: left;text-align: center;
}
.sheet-content-middle{
position: relative;width: 100%;border-bottom: 1px solid #e5e5e5;padding-bottom: 10px;margin-top: 10px;margin-left: 10px;
}
.sheet-content-middle p{
font-size: 16px;width: 70%;color: #666;text-overflow:ellipsis;white-space: nowrap;overflow:hidden;
}
</style>

主页面调用组件:home.vue

<template>
 <div class="home">

<sheet-list v-for="(item,index) in sheetList" :item="item"></sheet-list>
 </div>
</template>

<script>

import myMusicSheetList from './../../components/myMusicSheetList.vue'

export default {
 components:{'sheet-list':myMusicSheetList},
 data () {
 return {
 sheetList:[{
 id:1,
 name:'我创建的歌单',
 num:2,
 details:[{
 details_id:1,
 details_name:'我喜欢的音乐',
 details_num:30,
 details_image:'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1521191038714&di=117b8f1d83605767e8a7faf01cb9be9b&imgtype=0&src=http%3A%2F%2Fimgsrc.baidu.com%2Fimgad%2Fpic%2Fitem%2F8435e5dde71190efc4376916c41b9d16fcfa602f.jpg'
 },{
 details_id:2,
 details_name:'在欧洲田园般的乡村上骑单车',
 details_num:15,
 details_image:'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1521190642670&di=67822ec270160c1fb21e67d49e95a97f&imgtype=0&src=http%3A%2F%2Fpic30.nipic.com%2F20130615%2F2861027_140302450156_2.jpg'
 }]
 },{
 id:2,
 name:'我收藏的歌单',
 num:2,
 details:[{
 details_id:1,
 details_name:'这应该是你比较喜欢听的歌曲了',
 details_num:10,
 details_image:'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3679981803,1758706610&fm=27&gp=0.jpg'
 },{
 details_id:2,
 details_name:'欧美风格的音乐,安静的听',
 details_num:2,
 details_image:'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2406805917,4090912031&fm=27&gp=0.jpg'
 }]
 }]
 }
 },
 methods: {
 
 },
 mounted:function(){
 
 }
}
</script>
<style scoped>
</style>

如果不能运行请检查import 路径是否正确。

以上这篇vue2.0 可折叠列表 v-for循环展示的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js onload事件不起作用示例分析
Oct 09 Javascript
JavaScript实现同一个页面打开多张图片
Dec 29 Javascript
Javascript 实现全屏滚动实例代码
Dec 31 Javascript
原生js简单实现放大镜特效
May 16 Javascript
详解Node项目部署到云服务器上
Jul 12 Javascript
Vue内容分发slot(全面解析)
Aug 19 Javascript
基于Cookie常用操作以及属性介绍
Sep 07 Javascript
Vue Socket.io源码解读
Feb 07 Javascript
小程序红包雨的实现示例
Feb 19 Javascript
JS原型与继承操作示例
May 09 Javascript
VUE项目初建和常见问题总结
Sep 12 Javascript
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
Js中使用正则表达式验证输入是否有特殊字符
Sep 07 #Javascript
vue.js+element-ui动态配置菜单的实例
Sep 07 #Javascript
详解npm 配置项registry修改为淘宝镜像
Sep 07 #Javascript
vue 点击按钮实现动态挂载子组件的方法
Sep 07 #Javascript
关于JavaScript中高阶函数的魅力详解
Sep 07 #Javascript
npm配置国内镜像资源+淘宝镜像的方法
Sep 07 #Javascript
对类Vue的MVVM前端库的实现代码
Sep 07 #Javascript
You might like
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
使用JS 清空File控件的路径值
2013/07/08 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
应届生人事助理求职信
2013/11/09 职场文书
营业经理岗位职责
2013/11/10 职场文书
施工安全责任书范本
2014/07/24 职场文书
合作意向书
2014/07/30 职场文书
悬空寺导游词
2015/02/05 职场文书
2016高考感言
2015/08/01 职场文书
图文详解nginx日志切割的实现
2022/01/18 Servers
golang生成并解析JSON
2022/04/14 Golang