2014-01-21 95 views
9

下面發佈的代碼通過ajax請求加載我的樹的根元素。 我的樹非常大,所以我無法一次加載所有項目,所以我需要通過請求孩子爲特定ID加載元素。jsTree通過ajax加載兒童

如何通過點擊節點來加載ajax元素?

$('#jstree_demo_div').jstree({ 
      "plugins" : ["wholerow", "checkbox"], 
      'core' : { 
       'data' : { 
        'url' : function(node) { 
         return "/" + site + "/places/api/tree/list/"; 
        } 
       }, 
      } 

     }); 

部分JSON樣本的

[ 
    { 
     "text":"zachodniopomorskie", 
     "state":"closed", 
     "id":212353, 
    }, 

修正版本:

$('#jstree_demo_div').jstree({ 
      "plugins" : ["wholerow", "checkbox"], 
      'core' : { 
       'data' : { 
        'url' : "/" + site + "/places/api/tree/list/", 
        'data' : function(node) { 
         return { 
          'id' : node.id 
         }; 
        } 
       }, 
      } 
     }) 

我的問題的解決方案是,如果我想通過Ajax請求返回的孩子,我需要返回JSON文件其中包含:

"children:" true 
+5

+1'「孩子」:TRUE'。 jstree很棒,但文件很糟糕。 – timbernasley

回答

2
$('#jstree_demo_div').jstree({ 
      "plugins" : ["wholerow", "checkbox"], 
      'core' : { 
       'data' : { 
        'url' : "/" + site + "/places/api/tree/list/", 
        'data' : function(node) { 
         return { 
          'id' : node.id 
         }; 
        } 
       }, 
      } 
     }) 

解決我的問題是,如果我想通過Ajax請求返回的孩子,我需要返回JSON文件,其中包含:

"children:" true 
1

試試這個:

$('#jstree_demo_div').jstree(options).bind("select_node.jstree",function(event, data){ 
//Load child node here 

});//or "dbclick.jstree" instead of "select_node.jstree" 
+0

我仍然不明白應該如何加載子節點。 我應該在那裏調用什麼函數? – Efrin

+2

我弄明白了。檢查我的解決方案 – Efrin

0

如果您需要加載子節點,你可以嘗試使用

$("#jstree_demo_div").bind("select_node.jstree", function(e, data) { 
    $("#jstree_demo_div").jstree('open_node', data.node); 
} 

所以它會觸發一個AJAX負荷觸發。

+0

在第一篇文章中查看我的答案 – Efrin