1

我正在使用带有 json 数据的 Fancytree jquery 插件以树格式显示数据。问题是,我想将键名而不是值显示为我的树节点。例如,

[{
    "title": "Sample json",
    "expanded": true,
    "folder": true,
    "children": [{
        "title": "dev",
        "folder": true
    }, {
        "title": "etc",
        "folder": true,
        "children": [{
            "title": "cups"
        }, {
            "title": "httpd"
        }, {
            "title": "init.d"
        }]
    }

在这里,我想将“title”显示为我的树节点,而不是“Sample json”值。我怎么做?

任何帮助,将不胜感激。提前致谢!

4

1 回答 1

0

如果无法更改 json 对象的初始格式,您有以下选项之一:

// option 1
$('#tree1').fancytree({
source: [{
    "title": "Sample json",
    "expanded": true,
    "folder": true,
    "children": [{
        "title": "dev",
        "folder": true
    }, {
        "title": "etc",
        "folder": true,
        "children": [{
            "title": "cups"
        }, {
            "title": "httpd"
        }, {
            "title": "init.d"
        }]
    }]
}],
renderNode: function (event, data) {
    var node = data.node;
    node.tooltip = node.title;
    node.setTitle('title');
}
});

// option 2
$('#tree2').fancytree({
source: {
    url: 'data.json'
},
postProcess: function (event, data) {
    var response = data.response;

    function changeTitle(nodeData) {
        nodeData.tooltip = nodeData.title;
        nodeData.title = 'title';
        for (var i in nodeData.children) {
            var subNodeData = nodeData.children[i];
            changeTitle(subNodeData);
        }
    }

    for (var i in response) {
        var nodeData = response[i];
        changeTitle(nodeData);
    }
}
});
于 2015-03-07T09:46:20.943 回答