Javascript 是否可以使用Dijit/menu在Dijit中的特定位置插入菜单项
我有一个菜单,它的内容需要根据用户交互进行重大更改。这意味着需要引入一些新的菜单项,并且需要删除一些。查看Dojo发布的API文档,似乎没有一种方法可以在不删除现有项和从头创建菜单的情况下重做菜单的内容Javascript 是否可以使用Dijit/menu在Dijit中的特定位置插入菜单项,javascript,drop-down-menu,dojo,Javascript,Drop Down Menu,Dojo,我有一个菜单,它的内容需要根据用户交互进行重大更改。这意味着需要引入一些新的菜单项,并且需要删除一些。查看Dojo发布的API文档,似乎没有一种方法可以在不删除现有项和从头创建菜单的情况下重做菜单的内容 dijit/Menu的getChildren()方法返回一个数组,表明在特定索引位置插入菜单选项可能有一种相对简单的方法。然而,不幸的是,我找不到将菜单项数组附加到dijit/menu中的方法 有人知道(使用API的)直接方法吗?dijit/Menu缺少一些相当主要的用例。我做了一个自定义实现,
dijit/Menu
的getChildren()
方法返回一个数组,表明在特定索引位置插入菜单选项可能有一种相对简单的方法。然而,不幸的是,我找不到将菜单项数组附加到dijit/menu
中的方法
有人知道(使用API的)直接方法吗?
dijit/Menu
缺少一些相当主要的用例。我做了一个自定义实现,添加了我似乎一直想要的各种特性。其中包括切换给定的菜单项
,但答案是否定的,你必须自己做。您可以根据需要动态添加/删除MenuItem
s,也可以在创建时将它们全部注入,然后根据需要显示/隐藏:
[snip]
hideMenuItem :function(menuItemId){
var menuItems = this.getChildren();
for(var i=0; i < menuItems.length; ++i){
if(menuItemId === menuItems[i].id){
domStyle.set(menuItems[i].domNode, "display", "none");
break;
}
}
},
showMenuItem : function(menuItemId){
var menuItems = this.getChildren();
for(var i=0; i < menuItems.length; ++i){
if(menuItemId === menuItems[i].id){
domStyle.set(menuItems[i].domNode, "display", "");
break;
}
}
}
[/snip]
[snip]
hideMenuItem:函数(menuItemId){
var menuItems=this.getChildren();
对于(变量i=0;i
由@gabriel建议的答案是我的出发点,我注意到可以通过在中指定索引在特定位置添加菜单项
addChild(小部件,插入索引)
我最终做了一些不同的事情:
- 循环通过
找到我要查找的索引menu.getChildren()
- 删除菜单项(使用
)removeChild
- 添加新菜单项(使用
)addChild
我无法使用
insertIndex
,因为我的菜单中有需要处理的分隔符(叹气!)。谢谢@gabriel,我最后做了其他事情,因为我想做的不是显示和隐藏,而是根据我的应用程序的上下文添加和删除项目。说到这里,我确实注意到,通过在menu.addChild()中指定索引,可以在特定位置添加菜单项!试着去帮助别人,并得到别人的帮助。哈。我已经用insertIndex更新了我的pastebin,也许有一天它会帮助其他人。我建议你回答你自己的问题,因为你解决了这个问题。