基于vue-cli li列表的显示隐藏
效果:点击“公告标题”,显示公告内容,点击同一个“公告标题”多次,显示与隐藏切换

方法一:
html部分代码:
<ul class="clist">
<li v-for="(item,index) in dlist" @click="listClick3(index)" :class="{selected: item.isturn}">
{{item.title}}
<div v-for="di in item.data" v-show="item.isturn" @click.stop="">{{di}}</div>
</li>
</ul>
js部分代码:
data () {
return {
dlist: [{
title: '公告标题1',data: ['公告内容1']
},{
title: '公告标题2',data: ['公告内容2']
},{
title: '公告标题3',data: ['公告内容3']
}
],
}
} ,
methods: {
listClick3: function(index){
var _title = this.dlist[index].title,
_data = this.dlist[index].data,
_isturn = !this.dlist[index].isturn;
this.dlist.splice(index,1,{title:_title,data:_data,isturn:_isturn});
},
}
css代码:
.clist li{
width: 100%;
line-height: 30px;
border: 1px solid #dddddd;
}
.clist li>div{
line-height: 30px;
}
.clist li.selected{
color: red;
}
这里有一个问题是为什么我在点击事件里写的方法是用splice,而不是直接this.dlist[index].isturn=!this.dlist[index].isturn呢,毕竟网上百度来的大部分都是这个样子写的,原因就是‘=’号不会触发双向数据绑定,因为我们在dlist声明的时候是数组不是变量,变量可以使用‘=’号,数组是不可以的哦
方法二:
html部分代码:
<ul class="clist">
<li v-for="(item,index) in dlist" @click="listClick2(index)" :class="{selected: showlist[index]}">
{{item.title}}
<div v-for="di in item.data" v-show="showlist[index]" @click.stop="">{{di}}</div>
</li>
</ul>
js部分代码:
data () {
return {
dlist: [{
title: '公告标题1',data: ['公告内容1']
},{
title: '公告标题2',data: ['公告内容2']
},{
title: '公告标题3',data: ['公告内容3']
}
],
showlist: []
}
},
created(){
for(var i=0;i<this.dlist.length;i++){
this.showlist.push(false);
}
},
methods:{
listClick2: function(index){
this.showlist.splice(index,1,!this.showlist[index]);
},
}
vue的官方文档有提供相应的api和方法:数组更新检测
根据上述api,使用$set方法进行数据的更改:
方法三:
html部分代码:
<ul class="clist">
<li v-for="(item,index) in dlist" @click="listClick4(index)" :class="{selected: item.isturn}">
{{item.title}}
<div v-for="di in item.data" v-show="item.isturn" @click.stop="">{{di}}</div>
</li>
</ul>
js部分代码:
data () {
return {
dlist: [{
title: '公告标题1',data: ['公告内容1']
},{
title: '公告标题2',data: ['公告内容2']
},{
title: '公告标题3',data: ['公告内容3']
}
],
}
},
created(){
for(var x in this.dlist){this.dlist.push(false);//不需要用到this.$set(this.dlist,x,false);created是在元素创建之前,那个时候随便改动都可以。不需要用set通知vue
}
},
methods: {
listClick4: function(index){
this.dlist[index].isturn = !this.dlist[index].isturn;
this.$set(this.dlist,index,this.dlist[index]);
},
}
方法四:
html部分代码:
<ul class="clist">
<li v-for="(item,index) in dlist" @click="listClick5(index)" :class="{selected: showlist[index]}">
{{item.title}}
<div v-for="di in item.data" v-show="showlist[index]" @click.stop="">{{di}}</div>
</li>
</ul>
javascript部分代码:
data () {
return {
dlist: [{
title: '公告标题1',data: ['公告内容1']
},{
title: '公告标题2',data: ['公告内容2']
},{
title: '公告标题3',data: ['公告内容3']
}
],
}
},
created(){
for(var x in this.dlist){
this.showlist.push(false);
}
},
methods:{
listClick5: function(index){
this.$set(this.showlist,index,!this.showlist[index]);
},
}
基于vue-cli li列表的显示隐藏的更多相关文章
- 前端基于VUE的v-charts的曲线显示
目录 前端基于VUE的v-charts的曲线显示 1. 应用背景 2. 分析数据生产者生成 3. 取出数据消费者 4. 前端显示 4.1 安装V-charts插件 4.2 引入veline曲线插件 4 ...
- jQuery入门——实现列表的显示隐藏与实现轮播图
列表的显示与隐藏 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head& ...
- 基于jquery封装通用的控制显示隐藏的方法
应用场景 在项目中会存在大量这样的需求: 1.选择不同的radio单选框,页面上的部分内容随之显示隐藏 2.选择不同的option下拉框内容,页面上的部分内容随之显示隐藏 如果每次遇到这类需求都单独写 ...
- 基于vue cli 3.0创建前端项目并安装cube-ui
前提条件: 安装node.js. 国内的开发者最好先配置淘宝镜像. 之后用cnpm来代替npm命令. 项目创建过程: 打开cmd,输入命令进入目标工作空间,以本机项目为例: cd /d d: cd D ...
- 基于@vue/cli 的构建项目(3.0)
1.检测node的版本号 注意:1.Vue CLI需要Node.js的版本 8.9+(推荐8.11.0+) 所以在安装Vue CLI之前先看下node的版本 node -v 2.安装@vue/cli ...
- 基于Vue cli生成的Vue项目的webpack4升级
前面的话 本文将详细介绍从webpack3到webpack4的升级过程 概述 相比于webpack3,webpack4可以零配置运行,打包速度比之前提高了90%,可以直接到ES6的代码进行无用代码剔除 ...
- 基于vue的滚动条组件之--element隐藏组件滚动条scrollbar使用
在项目中,总是需要用到滚动条,但windows浏览器默认的滚动条是很丑的,为了页面美观,可以考虑优化滚动条样式. vue Element UI官方文档上并没有放出滚动条相关的示例说明,但是实际上是有 ...
- Vue CLI 3+tinymce 5富文本编辑器整合
基于Vue CLI 3脚手架搭建的项目整合tinymce 5富文本编辑器,vue cli 2版本及tinymce 4版本参考:https://blog.csdn.net/liub37/article/ ...
- 基于vue现有项目的服务器端渲染SSR改造
前面的话 不论是官网教程,还是官方DEMO,都是从0开始的服务端渲染配置.对于现有项目的服务器端渲染SSR改造,特别是基于vue cli生成的项目,没有特别提及.本文就小火柴的前端小站这个前台项目进行 ...
随机推荐
- 安装CentOS 6.4 64 位操作系统
1.安装 CentOS 6.4 64位操作系统的一些困境: 1.1 CentOS 6.4 64位操作系统的ISO文件有4G多,通过U盘安装的方式已经不可取(FAT32 只支持最大4G文件); 1.2 ...
- C#中把任意类型的泛型集合转换成SQLXML数据格式的小例子
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- 机器学习及其matlab实现—从基础到实践
第1周 MATLAB入门基础 第2周 MATLAB进阶与提高 第3周 BP神经网络 第4周 RBF.GRNN和PNN神经网络 第5周 竞争神经网络与SOM神经网络 第6周 支持向量机(Support ...
- 编写高质量代码改善C#程序的157个建议——建议76: 警惕线程的优先级
建议76: 警惕线程的优先级 线程在C#中有5个优先级:Highest.AboveNormal.Normal.BelowNormal和Lowest.讲到线程的优先级,就会涉及线程的调度.Windows ...
- javascript事件坐标
clientX 鼠标在页面显示区域的坐标 screenX鼠标在显示屏幕上的坐标 layerX 鼠标相对于“触发事件的元素的层级关系中离该元素最近的,设置了position的父元素”的边界的位置,从bo ...
- Alpha冲刺 - (9/10)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 进一步优化代码,结合自己负责的部分修 ...
- 用layer-list做一个卡片背景
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android=" ...
- hibernate3的配置
原创 链接:https://pan.baidu.com/s/1S-x271CT3wBqQodfFI1dZg 密码:ghti hiberdate3的下载链接如上 hibernate3在MyEclipse ...
- Java知多少虚拟机(JVM)以及跨平台原理
相信大家已经了解到Java具有跨平台的特性,可以“一次编译,到处运行”,在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的. 那么,跨平台是怎样实现的呢?这就 ...
- 修改mysql时区的三种方法
方法一:通过mysql命令行模式下动态修改 1.1 查看mysql当前时间,当前时区 > select curtime(); #或select now()也可以 +-----------+ | ...