簡體   English   中英

是否可以使用Dijit / Menu在Dijit中的特定位置插入菜單項

[英]Is it possible to insert a menu item at a specific position in Dijit using Dijit/Menu

我有一個菜單,其內容需要根據用戶交互而顯着更改。 這意味着需要引入一些新的菜單項,而某些則需要將其刪除。 查看Dojo發布的API文檔,似乎沒有一種方法可以在不刪除現有項並從頭開始重新創建菜單的情況下重做菜單內容。

dijit/MenugetChildren()方法返回一個數組,建議在特定的索引位置插入菜單選項可能相對簡單。 但是,不幸的是,我找不到將菜單項數組附加到dijit/Menu

有誰知道直接的方式(使用API​​)?

dijit/Menu缺少一些相當主流的用例。 我做了一個自定義實現,添加了我一直想要的各種功能。 其中之一是切換給定的菜單項。

我在這里粘貼了“ dijit/ContextMenu ”小部件(我的名字,不是他們的名字) ,但答案是否定的,您必須自己做。 您可以根據需要動態添加/刪除MenuItem ,或者在創建時將它們全部注入,然后根據需要顯示/隱藏:

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

@gabriel建議的答案是我的出發點,我注意到可以通過在Menu.addChild中指定索引來在特定位置添加菜單項。

addChild(widget,insertIndex)

我最終所做的最終與眾不同:

  • 通過menu.getChildren()循環到我正在尋找的索引
  • 刪除菜單項(使用removeChild
  • 添加新菜單項(使用addChild

由於菜單包含需要處理的分隔符,我無法使用insertIndex (嘆氣!)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM