亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jquery使用EasyUI Tree異步加載JSON數據(生成樹)

2019-11-19 17:37:58
字體:
來源:轉載
供稿:網友

這幾天因為工作需要,要做一個支持無限級的菜單。

我也是菜鳥一只,能想到的東西不多,所以用了Easy UI的tree組件。

不得不說,easyui確實很強大。

因為是無限級菜單,數據量可能有點大,所以考慮采用異步加載。

但是因為后臺默認傳來的數據是 一個實體,所以又在后臺進行了JSON字符串拼接。

最后,在網上找了N多代碼,然后又去問了好幾個群里的網友,終于搞出來這個小東西。

一、HTML部分代碼

  <div id="categoryChooseDiv" title="請選擇分類"      style="width: 650px; height: 300px;">       <ul id="MyTree"></ul>  </div>

html部分很簡單,只要放一個ul就可以了。

二、JS部分代碼

  function showCategory(){      $('#MyTree').tree({           checkbox: false,           url: '/category/getCategorys.java?Id=0',           onBeforeExpand:function(node,param){            $('#MyTree').tree('options').url = "/category/getCategorys.java?Id=" + node.id;         },                onClick:function(node){          var state=node.state;           if(!state){                  //判斷當前選中的節點是否為根節點             currentId=node.id;            $("#chooseOk").attr( "disabled" , false );  //如果為根節點 則OK按鈕可用            }else{            $("#chooseOk").attr( "disabled" , true );  //如果不為根節點 則OK按鈕不可用            }          }       });  }

最后幾句代碼是因為我這個項目需要,只有選擇到最下級節點的時候,才運行點擊“確定”。否則不允許。
當用戶點擊確定的時候,需要獲取 當前用戶選中節點 的所有父節點

      var nodes=[];      //定義數組用來存放各個節點名稱      var node =$("#MyTree").tree("getSelected"); //當前選中節點      nodes.push(node.text);            //首先放入當前節點      var pnode = $('#MyTree').tree('getParent',node.target); //獲取當前節點的父節點      while(pnode!=null){        nodes.push(pnode.text);          //依次放入各個父節點,直到根節點為止        pnode = $('#MyTree').tree('getParent',pnode.target);      }      nodes.reverse();             //數組元素倒序排序      $.each(nodes,function(){        //循環取值        var html=this;          $("#inCategoryDiv").html( $("#inCategoryDiv").html() + html + ">>" );      }); 

其實,主要問題在于后臺對數據的處理,即如何能夠轉化為 easyui tree才可以識別的JSON數據。

三、后臺代碼(Java)

 public ResponseEntity<String> findBy(Integer Id ) {    List<Category> categorys = getcategorys(Id );    String ss="";    ss+="[";    for( Category category : categorys )       {       ss+="{";       //ss += "/"id/": /""+category.getId()+"/",/"text/": /""+category.getName().toString()+"/",/"iconCls/": /"icon-ok/",/"state/": /"closed/"";;       List<Category> cs = getcategorys( category.getId() );  //判斷當前節點是否還有子節點       if(cs.size()==0){ //沒有子節點 設置 state 為空       ss+=String.format("/"id/": /"%s/", /"text/": /"%s/", /"iconCls/": /"/", /"state/": /"/"", category.getId() , category.getName());       }else{    // 還有子節點 設置 state為closed       ss+=String.format("/"id/": /"%s/", /"text/": /"%s/", /"iconCls/": /"/", /"state/": /"closed/"", category.getId() , category.getName());      }       ss+="},";       }       ss=ss.substring(0, ss.length() - 1);        ss+="]";      return super.responseString(ss); //字符編碼轉換    }

大致一個流程就是前臺傳來ID,然后獲取到實體對象,然后對實體進行循環,然后進行字符串處理這里設置state的意義主要在于讓 easyui 的tree可以知道當前節點是否為最低級節點,然后在前面顯示不同的圖標。

總結:

就是這個小東西,折騰了我好幾天,呵呵,因為俺太笨了。不過還好最后搞懂了,也理解了很多東西。

以前一直覺得JSON這東西很神秘,現在覺得它還是有規律的。

使用easyui tree的重點之一,就是對JSON數據的處理,有兩種方式可以實現:第一就是使用String的format方法。這個大家可以去網上參考一下相關的API等等,我第一次寫錯了,字符串的占位符應該是 %s  我寫成了 {0} 找了半天,才知道問題所在。 第二種方式,就是我上面注釋掉的那一行,直接使用字符串拼接。

然后上面獲取當前節點的所有父節點的時候,又糾結了半天,去網上找了很多代碼,都不能用,最后還是自己想了一招,才得以解決。

優點:可以使用異步加載,支持無限級。

缺點:太繁瑣,對后臺的數據格式要求過高。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
96sao精品视频在线观看| 色噜噜国产精品视频一区二区| 亚洲欧洲激情在线| 亚洲色图偷窥自拍| 91精品国产91久久久| 午夜精品在线视频| 日日狠狠久久偷偷四色综合免费| 日韩中文字幕欧美| 午夜精品美女自拍福到在线| 午夜免费日韩视频| 亚洲精品丝袜日韩| 国产日产欧美精品| 日韩高清中文字幕| 欧美日韩精品国产| 亚洲欧美国产高清va在线播| 伊人久久综合97精品| 精品视频久久久| 亚洲精品色婷婷福利天堂| 国模精品视频一区二区| 欧美国产精品人人做人人爱| 国产精品96久久久久久| 日本欧美爱爱爱| 欧美精品制服第一页| 欧美黄色www| 亚洲第一中文字幕在线观看| 欧美性受xxxx白人性爽| 国产精品最新在线观看| 国产精品美女久久久免费| 亚洲欧美日韩一区在线| 日韩色av导航| 欧美激情极品视频| 国产91色在线播放| 欧美激情视频在线观看| 九色精品免费永久在线| 午夜精品久久久久久久99热浪潮| 欧美第一淫aaasss性| 国产精品自拍小视频| 国产99久久精品一区二区永久免费| 国产丝袜一区二区三区免费视频| 日韩av在线影视| 自拍偷拍亚洲区| 国产亚洲精品久久久久动| 国产999精品久久久影片官网| 亚洲人在线观看| 久久免费视频网站| 欧美另类69精品久久久久9999| 亚洲人成电影在线播放| 91九色在线视频| 欧美精品一二区| 欧美成人三级视频网站| 精品一区二区亚洲| 欧美美女操人视频| 欧美激情亚洲一区| 久久香蕉国产线看观看网| 亚洲成人精品av| 91影院在线免费观看视频| 国产一区二区三区在线观看视频| 91久久久在线| 久久久久久久久91| 亚洲天堂日韩电影| 亚洲偷熟乱区亚洲香蕉av| 国产精品久久久久久久av电影| 91av福利视频| 高潮白浆女日韩av免费看| 成人久久18免费网站图片| 另类天堂视频在线观看| 日韩的一区二区| 色综合五月天导航| 国产日韩欧美综合| 日韩精品欧美国产精品忘忧草| 伊人伊人伊人久久| 91在线中文字幕| 在线日韩av观看| 欧美国产日韩一区二区在线观看| 欧美洲成人男女午夜视频| 亚洲综合精品伊人久久| 日韩国产精品一区| 菠萝蜜影院一区二区免费| 91手机视频在线观看| 欧美日韩国产va另类| 中文字幕日韩欧美精品在线观看| 亚洲一区二区三区视频| 亚洲欧美中文在线视频| 国产va免费精品高清在线观看| 亚洲精品在线看| 亚洲国产精品va在线观看黑人| 日韩精品高清在线| 国产成人啪精品视频免费网| 91久久中文字幕| 亚洲综合一区二区不卡| 久青草国产97香蕉在线视频| 欧美日韩激情视频| 日韩成人免费视频| 九九视频直播综合网| 川上优av一区二区线观看| 成人xxxxx| 国内精品一区二区三区四区| 久久国产精品电影| 欧美日韩电影在线观看| 日韩精品亚洲精品| 在线成人激情视频| 性色av一区二区咪爱| 久久视频在线看| 成人欧美一区二区三区黑人孕妇| 精品久久久久久久久久国产| 久久中文字幕在线| 黑人巨大精品欧美一区免费视频| 久久久国产精品x99av| 日本精品久久久| 美女视频久久黄| 亚洲欧美精品suv| 欧美日韩国产精品一区二区不卡中文| 欧美午夜无遮挡| 亚洲天堂av图片| 欧美色视频日本版| 亚洲性生活视频| 亚洲国产精品久久久久秋霞蜜臀| 国产精选久久久久久| 在线视频欧美日韩精品| 欧美精品成人在线| 美女啪啪无遮挡免费久久网站| 久久久国产成人精品| 国产精品久久久久久av福利| 96精品视频在线| 91大神在线播放精品| 97免费视频在线播放| 91成人天堂久久成人| 国产第一区电影| 欧美日韩在线看| 欧美成人亚洲成人日韩成人| 欧美日韩国产91| 亚洲欧美日韩天堂| 欧美成年人在线观看| 成人免费观看49www在线观看| 91精品久久久久久久久久久| 亚洲一区二区少妇| 欧美高清不卡在线| 欧美区在线播放| 久久精品国产亚洲7777| 国产精品专区第二| 在线播放精品一区二区三区| 欧美一级高清免费| 欧美另类交人妖| 亚洲国产福利在线| 亚洲精品videossex少妇| 日韩一区二区三区在线播放| 日韩精品欧美国产精品忘忧草| 久久精品国产亚洲精品2020| 久久免费国产视频| 欧美成人激情图片网| 国产网站欧美日韩免费精品在线观看| 欧日韩在线观看| 98精品国产高清在线xxxx天堂| 国内精品美女av在线播放| 啪一啪鲁一鲁2019在线视频| 91久久精品日日躁夜夜躁国产| 欧美大胆在线视频| 日韩中文在线中文网在线观看| 日韩大片在线观看视频| 国产乱人伦真实精品视频| 全亚洲最色的网站在线观看| 精品成人在线视频| 亚洲精品电影在线| 米奇精品一区二区三区在线观看|