Fancytree Lazyload: вызывайте Ajax каждый раз, когда он расширяется

У меня есть древовидная структура папок, которую я отображаю на веб-странице, используя Fancytree и используя опцию lazyLoad для отображения содержимого папки по требованию. Это отлично работает в первый раз, но если в папке нет элементов и когда они развернуты, так как элементов нет, значок раскрытия / свертывания исчезает. Когда я создаю несколько папок в пустой папке, у меня нет возможности снова запустить ajax-вызов для отображения нового содержимого. Есть идеи, как этого достичь?

$("#officialTreeView").fancytree({  
        extensions: ["table"],
        aria: true,
        source: {
            url: "myurl/jsonoutput", 
            data: {key: "1" },
            cache: false
        },
        lazyLoad: function(event,data) {
            var node = data.node;   
            //data.node.load(true);             
            // Issue an ajax request to load child nodes
            data.result = { cache:false, url: "myurl/jsonoutput", data: {key: node.key } }
        },          
        renderColumns: function(event, data) {
            var node = data.node,               
                $tdList = $(node.tr).find(">td");
            //console.log(node);    
            $tdList.eq(1).text(node.data.childcount);
        }
    });

2 ответа

Ты можешь позвонить node.resetLazy() или же node.load(true) (например, когда узел свернут).

См. http://wwwendt.de/tech/fancytree/doc/jsdoc/FancytreeNode.html для полного списка методов.

Т.е. просто добавьте обработчик событий для свертывания в ваш конфиг

collapse: function(event, data){
    data.node.resetLazy();
},
Другие вопросы по тегам