向Dojo Tree节点添加工具提示的最简单方法是什么?

时间:2011-06-21 03:17:00

标签: tree dojo tooltip

我已经看到了一些关于如何向Dojo Tree节点添加工具提示的建议,有些似乎没有用,有些人让我问其他问题......

我试图取得有限成功的一种方法是:

var myTree = new dijit.Tree({
                model: treeModel,
                id: "myTree",
                showRoot: false,
                persist: false,
                onClick: function(item){                                                
                    console.log(item.name);
                },
                _onNodeMouseEnter : function(node, evt){
                    var tip = new dijit.Tooltip({
                        label: node.item.name,                      
                        connectId: [node.domNode.id]
                    });
                    }                                                       
                });

但它有一种奇怪的行为,即只从树中较高的节点出来时才创建工具提示,并且只有当你从顶部边缘鼠标进入expando时...

第二次尝试我查看了Tree的onMouseEnter方法,但它无法访问节点的数据项,因此我必须通过看似有点逻辑来获取项目数据...通过导航DOM树查找当前节点ID,然后在商店中查找该项目?...

最后我发现Tree上有一个'getTooltip(item)'方法,但是当我设置它时:

var myTree = new dijit.Tree({
                model: treeModel,
                id: "myTree",
                showRoot: false,
                persist: false,
                onClick: function(item){                                                
                    console.log(item.Obi_Id);
                },
                getTooltip: function(item){
                    return item.Secondary_Names;
                }
            });

工具提示只是一个常规的HTML'标题'弹出窗口...

在动态(懒惰)树节点上完成dojo工具提示的正确(简单)方法是什么? -robbie

5 个答案:

答案 0 :(得分:8)

这是最简单的方法!

var myTree = new dijit.Tree({
    model: treeModel,
    id: "myTree",
    showRoot: false,
    persist: false,
    onClick: function(item){                                                
       console.log(item.name);
    },
    _onNodeMouseEnter: function (node,evt) {
       dijit.showTooltip(node.item.name,node.domNode)
    },
    _onNodeMouseLeave: function (node,evt) {
       dijit.hideTooltip(node.domNode);
    },
});

答案 1 :(得分:4)

您只需使用getTooltip属性:

new Tree
({ 
    model: model, 
    getTooltip: function(item) { return "A tooltip!"; }
});

答案 2 :(得分:1)

define(["dojo/aspect","dijit/Tree","dijit/Tooltip"] ,function(aspect,dijit_Tree,dijit_Tooltip) {
    var tree=new dijit_Tree({....});

    //dijit.showTooltip dijit.hideTooltip defined in Tooltip.js

    //copied from dndContainer.js:
    // aspect.after(this.tree, "_onNodeMouseEnter", lang.hitch(this, "onMouseOver"), true)

    var ttf_on=function(node,evt){dijit.showTooltip("Rev="+node.item.latestRevision,node.domNode)};

    var ttf_off=function(node,evt){dijit.hideTooltip(node.domNode);};

    aspect.after(tree,"_onNodeMouseEnter",ttf_on,true);
    aspect.after(tree,"_onNodeMouseLeave",ttf_off,true);
}

答案 3 :(得分:0)

之前我没有幸福与Tree合作过,但您是否尝试使用以下方法生成新的工具提示:http://dojotoolkit.org/reference-guide/dijit/Tooltip.html

答案 4 :(得分:0)

您可以简单地使用onMouseOver事件并绑定到Dijit Tooltip。

    new Tree({ 
        model: model, 
        onMouseOut: function(e){ 
            var node = dijit.getEnclosingWidget(e.target);
            Tooltip.hide(node.labelNode); 
        },
        onMouseOver: function(e) {
            var node = dijit.getEnclosingWidget(e.target);
            Tooltip.show("A tooltip!", node.labelNode);
        }
    });