user980591
user980591

Reputation: 31

Fancytree Lazyload: Make Ajax call each time it expands

I have a tree folder structure that I am displaying in a webpage using Fancytree and using the lazyLoad option to display the contents of the folder ondemand. This works fine for the first time, but if there are no items under a folder and when expanded, since there are no items, the icon to expand/collapse disappears. When i create some folders in at empty folder, I dont have a way to fire an ajax call again to display the new contents. Any idea how this can be achieved?

$("#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);
        }
    });

Upvotes: 2

Views: 6740

Answers (2)

Zac Spitzer
Zac Spitzer

Reputation: 74

i.e just add an event handler for collapse to your config

collapse: function(event, data){
    data.node.resetLazy();
},

Upvotes: 0

mar10
mar10

Reputation: 14794

You can call node.resetLazy() or node.load(true) (for example when a node is collapsed).

See http://wwwendt.de/tech/fancytree/doc/jsdoc/FancytreeNode.html for a complete list of methods.

Upvotes: 3

Related Questions