Значок Jstree и как «щелкнуть, чтобы развернуть» - PullRequest
5 голосов
/ 06 июля 2010

Я использую jsTree для создания индекса списка документации. Я использую JSON для создания своего дерева. У меня есть проблема и вопрос.

Моя проблема в том, что один и тот же значок (значок по умолчанию, установленный в типах) появляется как для папок, так и для файлов. Когда я изменяю значок по умолчанию, все иконки дерева устанавливаются на этот значок. Если я не использую плагин типов, для всех значков используется значок папки по умолчанию.

jstree config:

$("#agac_tutacagi").jstree({
    "plugins" : [ "themes", "json_data", "types", "ui"],

    "core":{
        "animation":500,
        "strings":{
            "loading":"Yükleniyor"
        }
    },

    "types":{
        "types":{
            "max_children" : -2,
            "max_depth" : -2,

            "folder" : {
                "valid_children" : [ "default", "dizin", "dosya" ],
                "icon" : {
                    "image" : "/static/p/js/jsTree/_demo/folder.png"
                }
            },
            "file" : {
                "valid_children" : "none",
                "icon" : {
                    "image" : "/static/p/js/jsTree/_demo/file.png"
                }
            },
            "default" : {
                "icon" : {
                    "image" : "/static/p/js/jsTree/_demo/file.png"
                }
            }
        }
    },

    "json_data" : {
        "ajax" : {
            "url" : "/dokumantasyon/dokumanAgaciOgesiAl/"
        }
    }
});

Образец JSON:

[{"data": {"icon": "folder", "title": "Sıkça Sorulan Sorular"}, "children": [{"data": {"icon": "file", "attr": {"onclick": "dokuman_getir(4)"}, "title": "Program makbuz basmadı"}}]}]
Значок

устанавливается в словаре данных, как показано в документации sjtree. Но это бесполезно. Я не получаю ошибки, все в порядке, кроме значка дерева.

Мой второй вопрос: как мне настроить jstree, чтобы при щелчке по родительскому узлу (папке) он расширялся, как если бы щелкнула стрелка расширения.

Ответы [ 2 ]

7 голосов
/ 26 июля 2010

Ваши данные ответа должны выглядеть следующим образом:

[{"attr":{"id":"node_2","rel":"folder"},"data":"root","state":"closed"}]

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

"state":"closed" - это ключ, указывающий jsTree запрашивать дочерние узлы с вашего сервера при щелчке / расширении.

"rel" : "folder" указывает jsTree использовать тип папки, определенный в узле "types", который вы указали выше. Затем используется значок, указанный для типа "folder".

6 голосов
/ 24 августа 2010

Чтобы создать щелчок, чтобы развернуть поведение, вы можете использовать плагин типов для переопределения поведения щелчка по умолчанию:

"types":{
    "types":{
        "max_children" : -2,
        "max_depth" : -2,
        "default" : {
            "valid_children" : [ "default"],            
            "select_node" : function (e) {
                this.toggle_node(e);
                return false;
            }
        },
        ...
    "plugins" : [ "themes", "html_data", "ui","types" ]
...