Pracuję nad tworzeniem radiogrupy zawierającej dwa radia; Ustawiłem słuchacz zmiany radiogrupy i wszystko wydaje się działać dobrze z wyjątkiem tego, że wizualnie przyciski radiowe nie są sprawdzane po kliknięciu, patrz poniżej pełny kod:

Ext.define('Mine.view.headerThemeButton', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.headerThemeButton',
    xtype: 'headerThemeButton',
    width: 50,
    height: 58,
    padding: 'auto 0 auto 0',
    bodyStyle: 'border-color: #FFFFFF !important;',
    //id : 'headerThemeButton',
    //height: 20,
    items: [{
        xtype: 'button',
        height: '100%',
         glyph: 'xf142@FontAwesome',
  
        cls: 'headerButtonsCls',
        listeners: {
            click: function(e, target) {
            
                var coords = e.getXY();
                var x = parseInt(coords[0]);
                var y = parseInt(coords[1]);

                 var finalY = y + 50;
                Ext.create('Ext.menu.Menu', {
                    items: [{
                        xtype: 'radiogroup',
                        columns: 1,
                        vertical: true,
                        items: [{
                            //xtype: 'radiofield',
                            boxLabel: 'Dark Mode',
                            name  : 'Mode',
                            //id : 'dmRB',
                            inputValue : 'dm'

                         }, {
                            //xtype: 'radiofield',
                            boxLabel: 'Standard Mode',
                            name  : 'Mode',
                            //id : 'smRB',
                            inputValue : 'sm'

                         }],
                        listeners : {

                             change : function(radio, newValue, oldValue){
                          
                                if (radio.getValue().Mode == 'dm'){

                                    radio.checked = true;
                                     this.onChangeThemeDark();
                                    }
                                else if (radio.getValue().Mode == 'sm'){
                                     radio.checked = true;
 
                                    this.onChangeThemeStandard();
                                    }
                            }
                        }
                    }]
                }).showAt(x, finalY);
            }

        }
    }]
});

Nie mogę użyć identyfikatora rekwizytu w każdym radiu, ponieważ budziło duplikat błędu rejestracji. Jakieś rozwiązanie?

Dzięki !

Edytuj: Cały przycisk jest zawarty w interfejsie zdefiniowanym przez:

Ext.define('Mine.view.newDashboard', {
    extend: 'Ext.container.Viewport',
    alias: 'widget.newDashboard',

    controller: 'newDashboard',
    reference: 'dashboard',
    //overflowY: 'scroll',

    //autoScroll:true,
    layout: {
        type: 'border',
        align: 'stretch '
        //scrollable: true
    },
    /*viewConfig:
    {
        autoScroll: true
    },*/
    //height: 620,

    style: {
        'backgroundColor': '#909090 !important'
    },

    items: [{
            region: 'north',
            html: '',
            border: false,
            collapsible: false,
            margin: '0 0 0 0',
            resizable: false,
            //bodyStyle:'border-bottom-width: 0 !important;',
            layout: {
                type: 'hbox'

                // align: 'stretch'
            },
            items: [{
                    xtype: 'logolink',
                    padding: 'auto 0 auto 0'
                },
                {
                    xtype: 'tbfill'
                },
                {
                    xtype: 'headerThemeButton',
                    width: '100px'
                },...
0
ites 22 listopad 2020, 17:04

1 odpowiedź

Najlepsza odpowiedź

Nie jestem pewien dokładnie, co pytasz, ale zakładam, że jest to problem, gdy menu pojawia się po wybraniu wartości nic nie jest wybrane. Może być może nie możesz uzyskać każdego przycisku w wydarzeniu.

Oto skrzypce, które pokazuje, jak uzyskać każdy przycisk w wydarzeniu, dwa różne sposoby.

Ponadto przy każdym kliknięciu przycisku utworzono nowe menu, więc pokazano nowy zestaw przycisków radiowych przy każdym kliknięciu przycisku. Tworzę menu na przycisku, pokazując go po kliknięciu.

Możesz także utworzyć menu i zapisać go na panelu (lub w dowolnym miejscu) i pokazać to menu za każdym razem, gdy nie chcesz, aby dołączyć do przycisku.

Skrzypce przyciski radiowe.

1
mcg1103 22 listopad 2020, 16:13