数据结构
/*数据*/
var ko_vue_data=[
{
name: "总能耗",
number:"0",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: [
{
name: "租户电耗",
number:"1",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: []
},
{
name: "公共用电",
number:"2",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: [
{
name: "暖通空调",
number:"2.1",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: [
{
name: "冷站",
number:"2.1.1",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: [
{
name: "冷水机组",
number:"2.1.1.1",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: []
}
]
},
{
name: "热力站",
number: "2.1.2",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: []
}
]
}
]
}
]
}
];
效果图
之前已经写过用Vue实现图上效果的方法,此篇为用knockout.js实现上图效果的方法,同样通过模板将数据绑定到页面。
模板代码
<script type="text/html" id="ko-temp">
<div class="tem">
<div class="tem-p" >
<div data-bind="event:{click:$root.toggleClick}"><i data-bind="style:{'visibility':number!=0?'visible':'hidden'},text:number"></i><span data-bind="text:name"></span></div>
<!--绑定数据-->
<div><span data-bind="text:energyone"></span></div>
<div><span data-bind="text:energytwo"></span></div>
<div><span data-bind="text:energythree"></span></div>
<!--绑定class,使数值显示出区分-->
<div><span data-bind="css:{isgreen:huanRatio<0,isred:huanRatio>100},text:huanRatio+'%'"></span></div>
<div><span data-bind="css:{isgreen:tongRatio<0,isred:tongRatio>100},text:tongRatio+'%'"></span></div>
</div>
<!--ko if:isFolder-->
<div class="tem-c" data-bind="template:{name:'ko-temp',foreach: child}" ></div>
<!--/ko-->
</div>
</script>
请对比之前一篇Vue的方法,了解两种方式模板绑定方式的不同。
模板写完,在页面上使用模板。
html代码
<div class="component-div" data-bind="template:{name:'ko-temp',foreach: ko_vue_data()}"></div>
JavaScript代码
/*数据*/
var ko_vue_data=[
{
name: "总能耗",
number:"0",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: [
{
name: "租户电耗",
number:"1",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: []
},
{
name: "公共用电",
number:"2",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: [
{
name: "暖通空调",
number:"2.1",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: [
{
name: "冷站",
number:"2.1.1",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: [
{
name: "冷水机组",
number:"2.1.1.1",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: []
}
]
},
{
name: "热力站",
number: "2.1.2",
energyone: 14410,
energytwo: 1230,
energythree: 1230,
huanRatio: -36.8,
tongRatio: 148.5,
child: []
}
]
}
]
}
]
}
];
function addAttribute(dst){
for(var i=0;i<dst.length;i++){
var temp=dst[i];
temp.isFolder=ko.observable(true);//默认展开
for(var j=0;j<temp.child.length;j++){
addAttribute(temp.child);
}
}
}
addAttribute(ko_vue_data);
/*视图模型*/
function viewModel() {
var self=this;
self.ko_vue_data=ko.observableArray(ko_vue_data);
self.toggleClick=function (event) {//展开折叠效果
window.event? window.event.cancelBubble = true : event.stopPropagation();
var isFolder=event.isFolder();
if(isFolder){
event.isFolder(false);
}else {
event.isFolder(true);
}
}
}
ko.applyBindings(new viewModel());
css样式同之前一篇Vue的一致,在这里就不在赘述,如有需要可查看之前一篇。到此两种方式算是全部写完,在报表多的页面,对于以上代码,稍加修改即可复用,绑定数据非常方便。
总结
以上所述是小编给大家介绍的knockoutjs模板实现树形结构列表,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# knockoutjs
# 模板
# knockoutjs树形结构列表
# javascript将扁平的数据转为树形结构的高效率算法
# vue.js与element-ui实现菜单树形结构的解决方法
# javascript如何用递归写一个简单的树形结构示例
# ReactJs实现树形结构的数据显示的组件的示例
# java、js中实现无限层级的树形结构方法(类似递归)
# AngularJS实现树形结构(ztree)菜单示例代码
# JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现
# 浅谈JavaScript构造树形结构的一种高效算法
# 绑定
# 两种
# 写完
# 小编
# 暖通空调
# 在这里
# 在此
# 如有
# 数据结构
# 给大家
# 到此
# 所述
# 写过
# 给我留言
# 感谢大家
# 图上
# 上图
# 复用
# 疑问请
# 有任何
相关文章:
python的本地网站制作,如何创建本地站点?
,制作一个手机app网站要多少钱?
如何在IIS7中新建站点?详细步骤解析
,如何利用word制作宣传手册?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
网站制作新手教程,新手建设一个网站需要注意些什么?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
宝塔Windows建站如何避免显示默认IIS页面?
,怎么用自己头像做动态表情包?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
建站之星后台密码遗忘?如何快速找回?
如何快速搭建高效香港服务器网站?
如何在云虚拟主机上快速搭建个人网站?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
linux top下的 minerd 木马清除方法
如何用西部建站助手快速创建专业网站?
如何在云服务器上快速搭建个人网站?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
如何在阿里云香港服务器快速搭建网站?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
智能起名网站制作软件有哪些,制作logo的软件?
网站制作模板下载什么软件,ppt模板免费下载网站?
香港服务器租用每月最低只需15元?
css网站制作参考文献有哪些,易聊怎么注册?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
Python lxml的etree和ElementTree有什么区别
青浦网站制作公司有哪些,苹果官网发货地是哪里?
网站网页制作专业公司,怎样制作自己的网页?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
江苏网站制作公司有哪些,江苏书法考级官方网站?
公众号网站制作网页,微信公众号怎么制作?
黑客入侵网站服务器的常见手法有哪些?
Bpmn 2.0的XML文件怎么画流程图
h5在线制作网站电脑版下载,h5网页制作软件?
淘宝制作网站有哪些,淘宝网官网主页?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
内部网站制作流程,如何建立公司内部网站?
宝塔新建站点为何无法访问?如何排查?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
建站之星导航菜单设置与功能模块配置全攻略
如何在Windows虚拟主机上快速搭建网站?
建站之星好吗?新手能否轻松上手建站?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
高防服务器租用如何选择配置与防御等级?
建站之星如何一键生成手机站?
家具网站制作软件,家具厂怎么跑业务?
建站之星如何修改网站生成路径?
创业网站制作流程,创业网站可靠吗?
*请认真填写需求信息,我们会在24小时内与您取得联系。