在使用echarts的時候,需要做一個可點擊收起子節點的樹圖,因為echarts中未實現該功能,資源在CSDN中可以下載。
目的:在點擊樹圖的某個節點以后,若無子節點,則沒反應,若有子節點,則收起子節點(不顯示),原樹圖重新按照沒有該子節點的情況重新排列。
步驟:
1、找到echarts源碼中關於click事件的實現。
2、實現收縮。
實現原理:
1:定義一個array存放子節點信息。【樣式 [父節點name,子節點]】
2:循環所有data中的數據,找到當前點擊的節點
(if:1)根據父節點name,判斷array中是否存在該節點數據,若存在並且不為空,則將該子節點數據賦值於該節點,然后將array中的該子節點信息賦值為null,跳出所有循環。重新渲染圖表
(if:2)(array中不存在該節點信息的前提下)若該節點存在子節點,則將子節點按照 [父節點 name,子節點] 的樣式,將子節點信息存入map,然后刪除data中的該節點的子節點。跳出所有循環,重新渲染圖表。
難點:
1:循環所有data數據。不能使用值引用,這樣的話在刪除(添加)子節點信息的時候,渲染數據的最終data起不到任何作用。(本人是使用原data,一級一級點下來的)
2:子節點數據的保存及刪除。這里定義的array實現的功能類似java里的map,刪除json中的數據使用delete。(delete data[0].children;)
3:重新渲染。setOption之前先clear一下。(否則好像沒反應)
源碼下載:
echarts樹圖點擊收縮子節點