使用vue组件来写一个折叠面板
2017-11-15 15:47
716 查看
一、之前在写折叠面板时都是使用的JQ的slideToggle,昨天对这一块代码进行重构,使用vue来进行开发
二、附上之前的代码段
for (var i = 0; i < ret.rows.length; i++) {
var liId = 'li' + i,
divId = 'div' + i;
var data = '应出勤:' + ret.rows[i].empNum + ', 实出勤:' + ret.rows[i].onworkNum + ', 请假:' + ret.rows[i].vacNum + ', 出差:' + ret.rows[i].otNum + ', 缺卡:' + ret.rows[i].nocardNum;
var li = document.createElement('li');
li.innerHTML = '<div class="cp-depart" id="' + liId + '"><div class="cp-depart-p">' + ret.rows[i].departName + ' 出勤率:' + (ret.rows[i].onworkNum / ret.rows[i].empNum * 100).toFixed(2) + '%</div></div>';
var kqdata = document.createElement('li');
kqdata.innerHTML = '<div class="cp-p" id="' + divId + '">' + data + '</div></br>';
a.appendChild(li);
a.appendChild(kqdata);
}
document.getElementById('li0').onclick = function() {
$('#div0').slideToggle();
}
三、使用vue重构时写的demo
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue组件实现折叠面板</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
<script src="http://cdn.bootcss.com/vue/2.0.3/vue.js"></script>
</head>
<body>
<div id="app">
<div v-for="i in mainData">
<c1 :item="i">
<p>{{ i }}</p>
</c1>
</div>
</div>
<template id="c1">
<div>
<button type="button" @click="open=!open">{{ open ? 'hide' : 'show' }}</button>
<div v-show="open">
<slot></slot>
</div>
</div>
</template>
<script>
Vue.component('c1', {
template: '#c1',
data() {
return {
open: true
}
}
})
var vm = new Vue({
el: '#app',
data: {
mainData:[1,2,3,4]
}
})
</script>
</body>
</html>
四、效果图
之前上传图片都不显示,这里把上面的demo在网页里面打开即可,
二、附上之前的代码段
for (var i = 0; i < ret.rows.length; i++) {
var liId = 'li' + i,
divId = 'div' + i;
var data = '应出勤:' + ret.rows[i].empNum + ', 实出勤:' + ret.rows[i].onworkNum + ', 请假:' + ret.rows[i].vacNum + ', 出差:' + ret.rows[i].otNum + ', 缺卡:' + ret.rows[i].nocardNum;
var li = document.createElement('li');
li.innerHTML = '<div class="cp-depart" id="' + liId + '"><div class="cp-depart-p">' + ret.rows[i].departName + ' 出勤率:' + (ret.rows[i].onworkNum / ret.rows[i].empNum * 100).toFixed(2) + '%</div></div>';
var kqdata = document.createElement('li');
kqdata.innerHTML = '<div class="cp-p" id="' + divId + '">' + data + '</div></br>';
a.appendChild(li);
a.appendChild(kqdata);
}
document.getElementById('li0').onclick = function() {
$('#div0').slideToggle();
}
三、使用vue重构时写的demo
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue组件实现折叠面板</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
<script src="http://cdn.bootcss.com/vue/2.0.3/vue.js"></script>
</head>
<body>
<div id="app">
<div v-for="i in mainData">
<c1 :item="i">
<p>{{ i }}</p>
</c1>
</div>
</div>
<template id="c1">
<div>
<button type="button" @click="open=!open">{{ open ? 'hide' : 'show' }}</button>
<div v-show="open">
<slot></slot>
</div>
</div>
</template>
<script>
Vue.component('c1', {
template: '#c1',
data() {
return {
open: true
}
}
})
var vm = new Vue({
el: '#app',
data: {
mainData:[1,2,3,4]
}
})
</script>
</body>
</html>
四、效果图
之前上传图片都不显示,这里把上面的demo在网页里面打开即可,
相关文章推荐
- 使用Vue组件实现一个简单弹窗效果
- vue如何在一个组件中引用另外一个组件并使用?有两种方法
- 使用FileReader API创建一个Vue的文件阅读器组件
- 请教一个在使用xtree过程中关于htc组件编写的问题
- 关于构建一个使用EJB组件的新系统
- 如何使用一个不错的图表组件WebChart(免费) 用c#编写
- OWC资料收集-在 Office 图表组件使用一个 XML DataSource
- 如何使用一个不错的图表组件WebChart(免费)
- 一个FTP上传组件及使用注意事项
- ASP.NET使用log4Net日志组件教程(每天产生一个日志及日志按大小切割)
- 使用Struts的ForwardAction实现转发到一个Servlet组件
- 使用VC++/ATL创建一个Office2K AddIn Com 组件
- 由于另外一个程序或正在运行的服务可能正在使用网络地址转换组件
- ASP.NET使用log4Net日志组件教程(每天产生一个日志及日志按大小切割)
- 如何使用jQuery UI的sortable组件做一个更为友好的界面(上)
- 使用面板组件进行分组和布局
- 在CSharp中使用WinGraphviz,一个COM图论组件,兼谈COM接口IStream在.NET下的互操作。
- 有关打印、收藏等的JS代码(打印等主要使用了一个IE组件来实现)
- 一个小提醒:不要在用户控件或者组件使用PAGE对象
- VS2005下组件ReportView使用时的一个问题