vue列表单项展开收缩功能之this.$refs的详解


Posted in Javascript onMay 05, 2019

展开效果?看红框区域

vue列表单项展开收缩功能之this.$refs的详解

收缩效果?看红框区域

 vue列表单项展开收缩功能之this.$refs的详解

接下来看代码逻辑

###template部分:已去除与本文不相关的功能代码

<li class="main-video"v-for="(item, index) of courseSubList" :key="item.id">
  <div class="audio-name">
    <div class="img-l">
      <span class="img-l-num">{{index+1}}</span>
      <span class="img-l-name">{{item.subName}}</span>
    </div>
    <div class="img-r" @click="showHide(index)" ref="arrow">
      <i class="iconfont"></i>
    </div>
  </div>
  <div class="audio-body" ref="child">
    <div class="body-l">
      <p class="body-l-num body-l-num-video">
        <i class="iconfont"></i>
      </p>
      <span class="body-l-name">{{item.fileName}}</span>
    </div>
    <div class="body-r">
      <i class="iconfont" @click="deletCourseSub(item.id)"></i>
    </div>
  </div>
</li>

###js部分:已去除与本文不相关的功能代码

data() {
	return {
		courseSubList: [], // 课程正文列表
	}
},
methods: {
  showHide(index) {
   if (this.$refs.child[index].style.display === 'none') {
    this.$refs.child[index].style.display = 'flex'
    this.$refs.arrow[index].style.transform = 'rotateX(0deg)'
   } else {
    this.$refs.child[index].style.display = 'none'
    this.$refs.arrow[index].style.transform = 'rotateX(180deg)'
   }
  },
  deletCourseSub(id) {
	  // 功能代码省略
  }
}

###分析过程:

  1. 分别给展开折叠的箭头加ref="arrow"属性;
  2. 分别给列表单项内容区最外层标签即本文的class="audio-body"的标签加ref=“child”;
  3. 再给箭头标签区域加个showHide(index)事件;
  4. 最后通过对应的index利用vue的ref属性改变对应的列表单项展开折叠;

以上所述是小编给大家介绍的vue列表单项展开收缩功能之this.$refs详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js 获取、清空input type=&quot;file&quot;的值(示例代码)
Dec 24 Javascript
js动态添加onclick事件可传参数与不传参数
Jul 29 Javascript
JSON格式的键盘编码对照表
Jan 29 Javascript
JavaScript蒙板(model)功能的简单实现代码
Aug 04 Javascript
JS实现颜色梯度与渐变效果完整实例
Dec 30 Javascript
Vue中之nextTick函数源码分析详解
Oct 17 Javascript
Vue无限滑动周选择日期的组件的示例代码
Jul 18 Javascript
JS实现的视频弹幕效果示例
Aug 17 Javascript
angular使用md5,CryptoJS des加密的方法
Jun 03 Javascript
Vue3新特性之在Composition API中使用CSS Modules
Jul 13 Javascript
vuex存取值和映射函数使用说明
Jul 24 Javascript
解决vue中provide inject的响应式监听
Apr 19 Vue.js
小程序异步问题之多个网络请求依次执行并依次收集请求结果
May 05 #Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
May 05 #Javascript
Vue 中如何正确引入第三方模块的方法步骤
May 05 #Javascript
详解vue的双向绑定原理及实现
May 05 #Javascript
Vue+Express实现登录注销功能的实例代码
May 05 #Javascript
Vue 递归多级菜单的实例代码
May 05 #Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
May 05 #Javascript
You might like
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
微信小程序实现锚点跳转
2020/11/23 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
跟老齐学Python之总结参数的传递
2014/10/10 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
python列表的增删改查实例代码
2018/01/30 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
Sanic框架应用部署方法详解
2018/07/18 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
试述DBMS的主要功能
2016/11/13 面试题
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
绵山导游词
2015/02/05 职场文书
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang