全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

knockoutjs模板实现树形结构列表

数据结构

/*数据*/
 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构造树形结构的一种高效算法  # 绑定  # 两种  # 写完  # 小编  # 暖通空调  # 在这里  # 在此  # 如有  # 数据结构  # 给大家  # 到此  # 所述  # 写过  # 给我留言  # 感谢大家  # 图上  # 上图  # 复用  # 疑问请  # 有任何 


相关文章: 常州企业网站制作公司,全国继续教育网怎么登录?  浅谈Javascript中的Label语句  如何通过.red域名打造高辨识度品牌网站?  临沂网站制作企业,临沂第三中学官方网站?  nginx修改上传文件大小限制的方法  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何用PHP快速搭建CMS系统?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  详解jQuery中基本的动画方法  C#怎么使用委托和事件 C# delegate与event编程方法  已有域名如何快速搭建专属网站?  微信小程序 input输入框控件详解及实例(多种示例)  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  如何彻底删除建站之星生成的Banner?  如何在云主机上快速搭建多站点网站?  郑州企业网站制作公司,郑州招聘网站有哪些?  PHP 500报错的快速解决方法  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  文字头像制作网站推荐软件,醒图能自动配文字吗?  建站之星安装失败:服务器环境不兼容?  如何解决VPS建站LNMP环境配置常见问题?  如何在阿里云香港服务器快速搭建网站?  c# 服务器GC和工作站GC的区别和设置  建站之星代理费用多少?最新价格详情介绍  Android使用GridView实现日历的简单功能  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何通过虚拟主机快速搭建个人网站?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  如何用wdcp快速搭建高效网站?  如何通过FTP空间快速搭建安全高效网站?  外贸公司网站制作哪家好,maersk船公司官网?  高端云建站费用究竟需要多少预算?  为什么Go需要go mod文件_Go go mod文件作用说明  实惠建站价格推荐:2025年高性价比自助建站套餐解析  网站制作软件有哪些,制图软件有哪些?  建站之星如何保障用户数据免受黑客入侵?  建站之星ASP如何实现CMS高效搭建与安全管理?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何在Tomcat中配置并部署网站项目?  linux top下的 minerd 木马清除方法  网站制作壁纸教程视频,电脑壁纸网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  北京企业网站设计制作公司,北京铁路集团官方网站?  学校建站服务器如何选型才能满足性能需求?  建站之星导航菜单设置与功能模块配置全攻略  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  如何在建站之星绑定自定义域名?  专业公司网站制作公司,用什么语言做企业网站比较好?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。