2011-01-22 66 views
6

我只是無法弄清楚,或找到任何文檔。添加元數據到jsTree

我有一個最基本的JSON:

{ 「數據」: 「節點」, 「元數據」:{ 「內容」: 「hellooooo」} }

這被加載,但我無法弄清楚如何寫入這個字段,檢索這個字段,並確保它是在創建新節點時創建的。

元數據的文檔在哪裏?

謝謝, Marco。

回答

7

我找到了答案,在http://groups.google.com/group/jstree/browse_thread/thread/28d0c8d3eb2d9f8f

如果你使用JSON和您提供 您的節點有這樣的元數據:

{ 
"data": "This is the name of the node", 
"metadata": { 
    "number": "no1", 
    "description": "Description" 
    } 
} 

...你」我將能夠得到(並設置)這樣的數據:

$('div#jstree').jstree(
/* ...options... */ 
).bind('select_node.jstree', 
function(e, data){ 
    alert( $(data.rslt.obj).data('description') 
); }); 

這適用於最新的提交 (rc3/r233)。在舊版本中,它使用

$(data.rslt.obj).data("jstree").description 

最後的解決方案爲我(默認下載目前是RC2)。

+0

我不斷收到'data.rslt`爲undefined – mmcrae 2015-10-05 18:13:11

1

謝謝,我對此失去了理智。這些舊例子都沒有奏效! 所以我終於可以訪問元數據了,問題是我不知道如何迭代未知數量的元數據字段?

好了,現在我已經檢查了它,並有可能超過)的數據(返回的對象沒有命名的參數迭代

.bind("select_node.jstree", function (e, data) { 
    var propsObj = $(data.rslt.obj).data(); 
    for (var prop in propsObj) { 
     alert(prop + " = " + propsObj[prop] + "\n"); 
    } 
}); 

如果你需要避免jstree_children陣列在你的方式,最好的方式我的意見是封裝的元數據到另一個對象,像這樣:

"metadata" : {"properties" : {"prop1" : "aa1a", "prop2" : "123"}} 

那麼你可以使用迭代:

var metadata = $(data.rslt.obj).data(); 
for (var prop in metadata.properties) {...}