как обновить contextMenu, используя Jquery contextMenu X2 - PullRequest
0 голосов
/ 21 апреля 2020

Я добавил это contextMenu следующим образом:

buildContentMenu = {

   commands : {}, // i'm add items from external function

   makeMenu: function makeMenu(){

     $.contextMenu({ 
        selector: '.fullRegularRow',
        items: this.commands,
        events: {
            show : function(options){
                 var serverId = this.attr("id").replace("server","").replace(/\-+/g, '.');
                 var fanMode = this.attr("fanMode");
                 var powerMode = this.attr("powerMode");
                 menuListManager.addOptionsToMenu(serverId, fanMode, powerMode)
                 console.log(serverId);

            }
        }        
    });

Теперь я хочу добавить его в список меню.

, поэтому я обновляю объект команды и пытаюсь обновить contectMenu как это, но не работает для меня:

    $.contextMenu('update');

Любое тело может помочь мне, как обновить мое меню?

1 Ответ

0 голосов
/ 22 апреля 2020

Через несколько часов я нашел ответ.

Дело в том, что если я хочу построить Меню до того, как оно будет показано, я могу использовать build . Теперь, прежде чем меню будет готово к показу, я могу изменить то, что я хочу показать, отредактировав Команды объектов (в моем случае).

это мой код Finel:

        $.contextMenu({ 
        selector: '.fullRegularRow, .COLservers4, .COLservers2, .quarterOf2U, .fullDoubledRow, .fullQuadrdRow',
            build : function($triggerElement, e){
                var fanmode = ( $triggerElement[0].attributes["data-fanmode"].value);
                var powermode = ( $triggerElement[0].attributes["data-powermode"].value);

                if(fanmode == "STANDARD_MODE"){
                    menuListManager.commands["strdFanMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Fan mode", icon: "fas fa-check"};
                    menuListManager.commands["zutaFanMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Fan mode"};
                }else{
                    menuListManager.commands["strdFanMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Fan mode"};
                    menuListManager.commands["zutaFanMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Fan mode", icon: "fas fa-check"}; 
                }

                if(powermode == "STANDARD_MODE"){
                    menuListManager.commands["strdPowerMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Power mode", icon: "fas fa-check"};
                    menuListManager.commands["zutaPowerMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Power mode"};
                }else{
                    menuListManager.commands["strdPowerMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Power mode"};
                    menuListManager.commands["zutaPowerMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Power mode", icon: "fas fa-check"}; 
                }

                return {
                    callback: function(){},
                    items: menuListManager.commands,      
                };

            }
    });

надеюсь, это кому-нибудь поможет.

...