1

我使用 ajax 作为我的数据源,您可以从下面的代码中看到。但是,我还需要以编程方式将节点插入树中。当我这样做时,jsTree 在创建节点后进行 ajax 回调。有没有办法根据节点属性来抑制这种情况?在我的特定情况下,我有在 CORBA 名称服务中列出的节点和未列出的节点。CORBA 名称服务中的那些运行良好,并且可以通过 AJAX 获得。我想将属性为“ns”=“none”的任意节点插入树中,而不是让它进行 ajax 调用。这是我的代码:

function renderJsonTree() {
    $("#JsonTree").jstree({
        "plugins" : [ "json_data", "types", "themes", "ui", "cookies" ],
        "ui" : {"select_limit" : 1},
        "json_data" : {
            "ajax" : 
                {
                    "url":"lookup",
                    "data":function(n) {
                        return {"server":n.attr?n.attr('data-ns'):'',
                            "longName":n.attr?n.attr('data-longname'):'',"isObj":n.attr?n.attr('data-isObj'):'n'};
                    }
                }
        },
        "types": {
            "valid_children" : [ "nameServer" ],
            "types" : {
                "nameServer": {
                    "icon": {"image":"/corba_browser/static/images/drive.png"},
                    "valid_children" : [ "default" ],
                },
                "global": {
                    "icon": {"image":"/corba_browser/static/images/globe.png"},
                    "valid_children" : [ "default" ]
                },
                "object": {
                    "icon": {"image":"/corba_browser/static/images/alien.png"},
                    "valid_children" : [ "default" ]
                },

                "default" : {"valid_children" : [ "default" ]}
            }
        }
    }).bind("loaded.jstree", function (event, data) {
        jQuery("li").css('line-height', "15pt");
        jQuery("li").css('font-size', "12pt");
    }).bind("open_node.jstree close_node.jstree", function (e,data) {
        jQuery("li").css('line-height', "15pt");
        jQuery("li").css('font-size', "12pt");
        var currentNode = data.args[0];
        if(e.type === "close_node") {
            currentNode.addClass("to-be-refreshed");
        }   
        if(e.type === "open_node") {
            if (currentNode.attr('ns')!='none') {
                if (currentNode.hasClass("to-be-refreshed")) { 
                    var tree = $.jstree._reference("#JsonTree");
                    tree.refresh(currentNode);
                }  
            }
        }
    });

};

4

0 回答 0