Проблема с Jstree может расширить узлы без детей - PullRequest
5 голосов
/ 21 сентября 2011

Я работаю с jstree с помощью ajax и вижу, что все мои узлы имеют стрелку для его расширения, даже те, у которых нет дочерних элементов.На демонстрационной странице jstree http://www.jstree.com/demo это не так.Я не вижу в демо-коде что-то отличное от моего, так что это происходит с сервера?Должен ли я добавить параметр в ответ на метод getChildren, чтобы сказать на jstree: «У этого нет детей, не позволяйте его расширять»?

Кто-нибудь знает, откуда он взялся?И что я могу сделать, чтобы это исправить?

Потому что, кажется, проблема, когда я использовал функцию копирования / вставки плагина contextmenu.Когда я вставляю узел (новый родитель), у которого нет дочерних элементов и он еще не открыт (поэтому дочерние элементы не были загружены), ничего не происходит, кроме запроса на получение дочерних элементов (например, если я нажимаю, чтобы открыть узел), которые, очевидно, ничего не возвращают,И он не выполняет функцию move_node.

РЕДАКТИРОВАТЬ: у меня та же проблема с «добавить» из контекстного меню

Кто-то может мне помочь?

Спасибо

Ответы [ 4 ]

9 голосов
/ 12 декабря 2011

Из документации jsTree:

http://www.jstree.com/documentation/html_data

будет применяться один из трех классов в зависимости от структуры узла:

<li class="[ jstree-open | jstree-closed | jstree-leaf ]"> 

Джонатан Стоуэлл прав, но установив attr.class в значение«jstree-leaf» не будет работать (по крайней мере, не в последней версии).

Но «open» и «closed» напомнили мне о node.state, поэтому я попытался, и оказалось, что когдавы устанавливаете для узла. state значение "leaf" в вашем классе сериализации JSON, он не будет расширяться.

4 голосов
/ 22 сентября 2011

Я добавил класс jstree-leaf в свойство attr для своих узлов, у которых нет дочерних элементов.

attr: { "class" : "jstree-leaf" }

Затем устанавливается класс CSS, который вам не нужен, чтобы иметь функцию расширения.

2 голосов
/ 23 сентября 2011

У меня была такая же проблема с методом "create" и узлами без детей.Решил его, указав состояние таких узлов как «открыт» вместо «закрыт» по умолчанию.

Надеется, что это поможет.

1 голос
/ 13 августа 2014

если вы отправляете данные json, укажите "jstree-leaf" как класс li_attr

 li_attr: {class = "jstree-leaf" }
...