javascript - 是否可以使用 Dijit/Menu 在 Dijit 的特定位置插入菜单项

标签 javascript drop-down-menu dojo

我有一个菜单,其内容需要根据用户交互进行显着更改。这意味着需要引入一些新的菜单项,也需要删除一些菜单项。查看 Dojo 已发布的 API 文档,似乎没有一种方法可以在不删除现有项目并从头开始重新创建菜单的情况下重做菜单的内容。

dijit/MenugetChildren() 方法返回一个数组,表明可能有一种相对简单的方法可以在特定索引位置插入菜单选项。然而不幸的是,我找不到将菜单项数组附加到 dijit/Menu 中的方法。

有人知道直接的方法(使用 API)吗?

最佳答案

dijit/Menu 缺少一些相当主流的用例。我做了一个自定义实现,添加了我似乎一直想要的各种功能。其中包括切换给定的菜单项。

I've pastebin'd my "dijit/ContextMenu" widget (my name, not theirs) here ,但答案是否定的,你必须自己做。您可以根据需要动态添加/删除 MenuItem,或者我所做的是在创建时将它们全部注入(inject),然后根据需要显示/隐藏:

    [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]

关于javascript - 是否可以使用 Dijit/Menu 在 Dijit 的特定位置插入菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30354297/

相关文章:

javascript - Golang 程序的 Electron 用户界面?

javascript - 如何防止在单击后删除文本中的选择?

css - Bootstrap 下拉列表 - 更改菜单项的显示属性

javascript - dojo/parser::parse() 错误 TypeError {stack: (...), message: “Cannot read property ' toString' of undefined”}

流体布局中的 JavaScript 数据网格?

javascript - 我可以使用 Watson Conversation 制作全页聊天机器人吗?

javascript - jqueryUI 效果无法在表单元素上正常工作

javascript - 将多个下拉值附加到 URL

javascript - 用 JS 下拉

javascript - jsPlumb:端点位置错误