最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

knockoutjs模板实现树形结构列表

来源:懂视网 责编:小采 时间:2020-11-27 22:33:35
文档

knockoutjs模板实现树形结构列表

knockoutjs模板实现树形结构列表:数据结构 /*数据*/ var ko_vue_data=[ { name: 总能耗, number:0, energyone: 14410, energytwo: 1230, energythree: 1230, huanRatio: -36.8, tongRatio: 148.5, child: [ { name: 租户电耗, nu
推荐度:
导读knockoutjs模板实现树形结构列表:数据结构 /*数据*/ var ko_vue_data=[ { name: 总能耗, number:0, energyone: 14410, energytwo: 1230, energythree: 1230, huanRatio: -36.8, tongRatio: 148.5, child: [ { name: 租户电耗, nu

数据结构

/*数据*/
 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模板实现树形结构列表,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

knockoutjs模板实现树形结构列表

knockoutjs模板实现树形结构列表:数据结构 /*数据*/ var ko_vue_data=[ { name: 总能耗, number:0, energyone: 14410, energytwo: 1230, energythree: 1230, huanRatio: -36.8, tongRatio: 148.5, child: [ { name: 租户电耗, nu
推荐度:
标签: 实现 js 模板
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top