gpt4 book ai didi

dojo - 如何将 dijit.Menu 与 dijit.Tree 的特定节点关联(绑定(bind))

转载 作者:行者123 更新时间:2023-12-01 06:50:42 27 4
gpt4 key购买 nike

我已经能够将带有两个 MenuItem 的简单 dijit.Menu 绑定(bind)到带有 Menu.bindDomNode(Tree.domNode) 的 dijit.Tree 的节点,但我想改进哪些节点获取上下文菜单并且在获取 domNodes 时遇到问题从树项目绑定(bind)菜单。我希望有一种更简单的方法可以做到这一点?

    datStore = this.DataStore;

mdl = this.Model;

tree = this.Tree;

datStore.fetch({

query: { nodeType: "ROOT" },
onItem: function(item, request) {

dojo.forEach(datStore.getValues(item, "children"), function(childItem) {

var itemNode = tree.getNodesByItem(mdl.getIdentity(childItem));

console.log(itemNode): //returns the widget, and the widget has a domNode property that seems ok with firebug traversing of the itemNode object, though the div value is 'dimmed' in firebug (not valid node yet in the DOM?)

console.log(itemNode.domNode);//returns 'undefined', so the binding below does not work

if (childItem.nodeType == "MATCHED_VALUE") {

Menu.bindDomNode(itemNode.domNode);

}

});
}
});

最佳答案

如果你不喜欢使用像“_openMyself”这样的伪私有(private)方法,你也可以使用菜单的 onFocus 事件。不过,您应该右键单击更改当前选定的节点。

var tree = new dijit.Tree({
onMouseDown:function(ev,node){
if(ev.button==2){ // right-click
var here=dijit.getEnclosingWidget(ev.target);
this.set('selectedNode',here);
}
}
});
var menuItem=new dijit.MenuItem({...});
var myMenu = new dijit.Menu({
onFocus:function(){
var selected=tree.selectedItem;
// do stuff here like:
menuItem.attr('disabled',(selected.children)?true:false);
}
});
myMenu.addChild(menuItem);
myMenu.bindDomNode(tree.domNode);

由于众所周知地缺乏 Dojo 文档,我花了几个小时的反复试验才找到答案。这就是为什么我在问题发布两年后在这里发布这个。

关于dojo - 如何将 dijit.Menu 与 dijit.Tree 的特定节点关联(绑定(bind)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3216306/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com