В jsTree я получаю data.rslt как неопределенный - PullRequest
2 голосов
/ 12 марта 2012

Используя jsTree, я получаю data.rslt неопределенным при попытке прочитать объект данных.

Вот мой jQuery, создающий дерево, загружающий JSON, и он должен вывести объект data.rslt на консоль при загрузке.

$(function () {
    $("#demo1").jstree({ 
        "plugins" : [ "themes","json_data","ui", "crrm" ],
        "json_data" : {
            "ajax" : {
                "url" : "categorytreejson.asp"
            }
        },
        "ui" : {
            "initially_select" : [ "root" ]
        }
    });

    $("#demo1").bind("loaded.jstree", function (e, data) {
        console.log(data.rslt)
    });
});

Вот данные JSON

{"data": "root", "attr": {"id": "root"}, "children": [{"data": "Photography", "attr": {"id": "Photography"}, "children": [{"data": "Lenses", "attr": {"id": "Lenses"}, "children": [{"data": "Telephoto", "attr": {"id": "Telephoto"}},{"data": "Macro", "attr": {"id": "Macro"}},{"data": "Other", "attr": {"id": "Other"}}]}]}]}

Полученный HTML

<li class="jstree-last jstree-open" id="root"><ins class="jstree-icon">&nbsp;</ins><a class="" href="#"><ins class="jstree-icon">&nbsp;</ins>root</a><ul style=""><li class="jstree-closed" id="Photography"><ins class="jstree-icon">&nbsp;</ins><a class="" href="#"><ins class="jstree-icon">&nbsp;</ins>Photography</a><ul><li class="jstree-last jstree-closed" id="Lenses"><ins class="jstree-icon">&nbsp;</ins><a href="#"><ins class="jstree-icon">&nbsp;</ins>Lenses</a><ul><li class="jstree-leaf" id="Telephoto"><ins class="jstree-icon">&nbsp;</ins><a href="#"><ins class="jstree-icon">&nbsp;</ins>Telephoto</a></li><li class="jstree-leaf" id="Macro"><ins class="jstree-icon">&nbsp;</ins><a href="#"><ins class="jstree-icon">&nbsp;</ins>Macro</a></li><li class="jstree-last jstree-leaf" id="Other"><ins class="jstree-icon">&nbsp;</ins><a href="#"><ins class="jstree-icon">&nbsp;</ins>Other</a></li></ul></li></ul></li></li></ul></li></ul></li>

И объект данных в Firebug.

args: []
inst: Object { data={...}, get_settings=function(), _get_settings=function(), more...}
rlbk: false
rslt: undefined

1 Ответ

1 голос
/ 13 марта 2012

Некоторые события не заполняют объект data.rslt.
Начиная с базовой документации jsTree :

структура данных :

{ 
   "inst" : /* the actual tree instance */, 
   "args" : /* arguments passed to the function */, 
   "rslt" : /* any data the function passed to the event */, 
   "rlbk" : /* an optional rollback object - it is not always present */
}

В частности, событие loaded.jstree будет содержать пустой data.rslt, поскольку в функцию не переданы никакие дополнительные данные.

В других событиях, таких как create.jstree или rename.jstree, будет заполнен data.rslt.

Надеюсь, теперь вам понятнее: -)

...