国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

knockoutjs模板實現樹形結構列表

2019-11-19 15:56:18
字體:
來源:轉載
供稿:網友

數據結構

/*數據*/ 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模板實現樹形結構列表,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鹿泉市| 攀枝花市| 鹤庆县| 保山市| 那曲县| 玛曲县| 从江县| 尉氏县| 红河县| 乐安县| 河间市| 高邮市| 贡觉县| 云浮市| 朔州市| 正阳县| 巫山县| 绥宁县| 黔西县| 新巴尔虎左旗| 蒙自县| 石渠县| 密山市| 嘉义市| 进贤县| 上思县| 天峻县| 抚顺市| 都昌县| 阳山县| 诸暨市| 渭南市| 陇川县| 闸北区| 鹤岗市| 柯坪县| 寻乌县| 淅川县| 筠连县| 临泉县| 孟津县|