数据结构
/*数据*/
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构造树形结构的一种高效算法
# 绑定
# 两种
# 写完
# 小编
# 暖通空调
# 在这里
# 在此
# 如有
# 数据结构
# 给大家
# 到此
# 所述
# 写过
# 给我留言
# 感谢大家
# 图上
# 上图
# 复用
# 疑问请
# 有任何
相关文章:
代购小票制作网站有哪些,购物小票的简要说明?
PHP正则匹配日期和时间(时间戳转换)的实例代码
独立制作一个网站多少钱,建立网站需要花多少钱?
济南专业网站制作公司,济南信息工程学校怎么样?
北京网站制作的公司有哪些,北京白云观官方网站?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
建站ABC备案流程中有哪些关键注意事项?
如何解决VPS建站LNMP环境配置常见问题?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
建站主机是否属于云主机类型?
如何用PHP工具快速搭建高效网站?
如何快速搭建个人网站并优化SEO?
如何确保FTP站点访问权限与数据传输安全?
如何通过建站之星自助学习解决操作问题?
c# 服务器GC和工作站GC的区别和设置
建站上市公司网站建设方案与SEO优化服务定制指南
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何制作算命网站,怎么注册算命网站?
如何在七牛云存储上搭建网站并设置自定义域名?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
建站之星后台密码遗忘或太弱?如何重置与强化?
浅谈Javascript中的Label语句
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Android自定义控件实现温度旋转按钮效果
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何通过二级域名建站提升品牌影响力?
如何高效利用亚马逊云主机搭建企业网站?
如何快速搭建高效简练网站?
如何在自有机房高效搭建专业网站?
常州自助建站费用包含哪些项目?
制作网站的公司有哪些,做一个公司网站要多少钱?
网站制作服务平台,有什么网站可以发布本地服务信息?
Swift中swift中的switch 语句
如何在局域网内绑定自建网站域名?
上海网站制作开发公司,上海买房比较好的网站有哪些?
高端企业智能建站程序:SEO优化与响应式模板定制开发
北京专业网站制作设计师招聘,北京白云观官方网站?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
如何确认建站备案号应放置的具体位置?
如何在阿里云高效完成企业建站全流程?
如何挑选最适合建站的高性能VPS主机?
如何通过IIS搭建网站并配置访问权限?
如何高效生成建站之星成品网站源码?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
建站VPS配置与SEO优化指南:关键词排名提升策略
如何快速搭建二级域名独立网站?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
*请认真填写需求信息,我们会在24小时内与您取得联系。