【问题标题】:change node icon using fancytree.js使用 fancytree.js 更改节点图标
【发布时间】:2023-04-11 02:59:02
【问题描述】:

我在树视图中使用 fancytree.js,我在树上有一个回调:

$("#tree").fancytree({ 
    source: {url: "/" + appPath + "/pathosadmin?treepages=true"},
    postProcess: function (event, data) {
        data.result = convertData(data.response, true);
    },
    init: function (event, data) {
        var root = $("#tree").fancytree("getRootNode");
        root.sortChildren(function (a, b) {
            return treeSort(a, b);
        }, true);
    },
    icon: function (event, data) {

        switch (data.node.data.NODE_TYPE) {
            case 1: //page
                if (data.node.data.STARTPAGE == 0) {
                    return "fancytree_page_icon";
                } else if (data.node.data.STARTPAGE == 1) {
                    _this.startPageNode = data.node;
                    return "fancytree_startpage_icon";
                }
            case 2: //group
                return "fancytree_group_icon";
            case 3: //level
                if (data.node.data.LEVELID) {
                    switch (data.node.data.LEVELID) {
                        case 1:
                            return "fancytree_level_1_icon";
                        case 2:
                            return "fancytree_level_2_icon";
                        case 3:
                            return "fancytree_level_3_icon";
                        case 4:
                            return "fancytree_level_4_icon";
                        case 5:
                            return "fancytree_level_5_icon";
                    }
                } else {
                    return "fancytree_location_icon";
                }
        }
    },
    extensions:

现在我还想在运行时更改图标。可惜了

if (_this.startPageNode) {
     _this.startPageNode.icon = "fancytree_page_icon";
     _this.startPageNode.renderTitle();
 }
 activeNode.icon = "fancytree_startpage_icon";
 activeNode.render();
 _this.startPageNode = activeNode;

不起作用。有关如何解决该问题的任何提示。 node.icon 属性始终未定义,即使我设置它(+渲染节点)它也不会显示。

【问题讨论】:

    标签: javascript fancytree


    【解决方案1】:

    renderTitle() 调用图标函数,所以我发现动态更改图标的唯一方法是在节点上放置一些属性

    activeNode.state = 'clicked';
    activeNode.renderTitle();
    

    然后在树上的图标功能中添加额外的处理登录:

    var state = data.node.state;
    if (state) {
        switch (state) {
            case "clicked": return "glyphicon glyphicon-ban-circle"
                return;
            case "completed": return "glyphicon glyphicon-ok-circle"
                return;
            case "removed": return "glyphicon glyphicon-remove-circle"
                return;
            default:
                return "glyphicon glyphicon-remove-circle"
                break;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 2013-09-21
      • 2013-07-11
      • 2011-06-06
      相关资源
      最近更新 更多