jstree - загрузить все дерево за один вызов - PullRequest
0 голосов
/ 16 февраля 2012

Я использую это:

$('#topicTree').jstree({ 
        "json_data" : {
            "ajax" : {
                url : serviceUrl
            }
    },
    "plugins" : ["themes", "json_data", "ui", "crrm", "hotkeys"]
});

но когда я щелкаю по узлу, он перезапускает запрос ajax и снова получает и заполняет узел всем узлом дерева верхнего уровня. Я знаю, что есть функция загрузки по требованию или отложенной загрузки, но я стараюсь избегать этого, если это возможно. Я также использовал следующее:

$("#tree").jstree({
    "plugins" : ["themes", "json_data", "ui", "crrm", "hotkeys"],
    "json_data" : {
        "ajax" : {
            "type": 'GET',
            "url": function (node) {
                //debugger;
                var nodeId = "";
                var url = "";
                if (node == -1)
                {
                    url = "/ajax/gettopics/";
                }
                return url;
            },
            "success": function (data) {
                //debugger;
                return data;
            },
            "error":function(data) {
                //debugger;
                alert("error loading tree!");
            }
        }
    }
}).bind("loaded.jstree", function (event, data) {
    //alert("TREE 2 IS LOADED!");
});

1 Ответ

1 голос
/ 17 февраля 2012

Хорошо, так что выяснил проблему ... мой DTO, который сериализован в Json, чувствителен к регистру.Дьявол кроется в деталях - я изменил соглашение об именах с:

public class JsTreeJsonNode
{
    public string data { get; set; }
    public Dictionary<string, string> attr { get; set; }
    public string state { get; set; }
    public List<JsTreeJsonNode> Children { get; set; } 
}

на

public class JsTreeJsonNode
    {
        public string data { get; set; }
        public Dictionary<string, string> attr { get; set; }
        public string state { get; set; }
        public List<JsTreeJsonNode> children { get; set; } 
    }

Эта заглавная буква «С» у детей действительно вызвала некоторые беспорядки.Grrr ...

Когда заполняется элемент dict, запрос ajax не запускается, если он не возвращается как нулевой или пустой (нулевые члены), что хорошо подходит для моего сценария.

...