knockoutjs模板实现树形结构列表
发布时间 - 2026-01-11 02:35:01 点击率:次数据结构
/*数据*/
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构造树形结构的一种高效算法
# 绑定
# 两种
# 写完
# 小编
# 暖通空调
# 在这里
# 在此
# 如有
# 数据结构
# 给大家
# 到此
# 所述
# 写过
# 给我留言
# 感谢大家
# 图上
# 上图
# 复用
# 疑问请
# 有任何
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
Linux系统命令中tree命令详解
EditPlus中的正则表达式实战(5)
如何选择PHP开源工具快速搭建网站?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Laravel storage目录权限问题_Laravel文件写入权限设置
如何在局域网内绑定自建网站域名?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
如何在香港免费服务器上快速搭建网站?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Laravel如何使用模型观察者?(Observer代码示例)
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何基于云服务器快速搭建网站及云盘系统?
Laravel如何配置和使用缓存?(Redis代码示例)
利用vue写todolist单页应用
如何在建站主机中优化服务器配置?
高端建站如何打造兼具美学与转化的品牌官网?
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
用v-html解决Vue.js渲染中html标签不被解析的问题
手机网站制作与建设方案,手机网站如何建设?
如何实现javascript表单验证_正则表达式有哪些实用技巧
Laravel如何配置Horizon来管理队列?(安装和使用)
如何用免费手机建站系统零基础打造专业网站?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
简单实现Android文件上传
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
奇安信“盘古石”团队突破 iOS 26.1 提权
EditPlus中的正则表达式 实战(4)
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
网站建设保证美观性,需要考虑的几点问题!
JS去除重复并统计数量的实现方法
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
网页设计与网站制作内容,怎样注册网站?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Laravel如何使用Service Container和依赖注入?(代码示例)
,南京靠谱的征婚网站?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
Python进程池调度策略_任务分发说明【指导】
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
做企业网站制作流程,企业网站制作基本流程有哪些?
如何在万网利用已有域名快速建站?
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)

