Добавление метаданных в jsTree - PullRequest
6 голосов
/ 22 января 2011

Я просто не могу с этим разобраться или найти какие-либо документы.

У меня есть голый JSON:

{ «данные»: «узел», "metadata": {"content": "hellooooo"} }

Это загружается, но я не могу понять, как записать в это поле, извлечь это поле и убедиться, что это сделано при создании нового узла.

Где находятся документы для метаданных?

Спасибо, Marco.

Ответы [ 2 ]

7 голосов
/ 25 марта 2011

Я нашел ответ на 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).

1 голос
/ 25 августа 2011

Спасибо, я схожу с ума по этому поводу.Ни один из старых примеров не сработал!Итак, я наконец-то могу получить доступ к метаданным, проблема в том, что я не знаю, как перебирать неизвестное количество полей метаданных?

хорошо, теперь я проверил его и можно перебирать объект, возвращаемый data () без именованных параметров

.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) {...}
...