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

Tree 向Dojo树节点添加工具提示的最简单方法?,tree,dojo,tooltip,Tree,Dojo,Tooltip,我看到了很多关于如何向Dojo树节点添加工具提示的建议,有些建议似乎不起作用,有些建议让我问其他问题 我尝试过的一种有限成功的方法是: var myTree = new dijit.Tree({ model: treeModel, id: "myTree", showRoot: false, persist: false, onClick

我看到了很多关于如何向Dojo树节点添加工具提示的建议,有些建议似乎不起作用,有些建议让我问其他问题

我尝试过的一种有限成功的方法是:

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中时才创建工具提示

第二次尝试,我查看了树的onMouseEnter方法,但它没有访问节点数据项的权限,因此我必须通过一些逻辑来获取项数据,方法是…通过导航DOM树查找当前节点id,然后在存储中查找该项

最后,我发现树上有一个“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

我以前没有使用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) {
       dijit.showTooltip(node.item.name,node.domNode)
    },
    _onNodeMouseLeave: function (node,evt) {
       dijit.hideTooltip(node.domNode);
    },
});

您只需使用onMouseOver事件并绑定到Dijit工具提示即可

    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);
        }
    }); 

您可以简单地使用
getTooltip
属性:

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

是的,我在上面的第一次尝试中在_onNodeMouseEnter事件中使用了这种技术,但是鼠标移动只是间歇性地显示工具提示,出现了奇怪的行为。
new Tree
({ 
    model: model, 
    getTooltip: function(item) { return "A tooltip!"; }
});