Как получить доступ к панели инструментов из меню Extjs SplitButton? - PullRequest
1 голос
/ 16 августа 2011

У меня есть такая панель инструментов

  tbar: [{
            xtype        : 'textfield',
            name        : 'number',
            itemId        : 'number',
            listeners    : {
                change    : function(t,n){
                        console.log(this.up('toolbar').down('#splitbut')) // i can access splitbutton from here
                }
            }                                                          
        },{
            xtype    : 'splitbutton',
            text    : 'Report',
            disabled: true,
            itemId    : 'splitbut',
            menu    : [{
                    text    : 'details',
                    handler    : function() {
                        // how to access #number text field  from here
                    }
                }

Я пытался вот так. Up ('menu'). Up ('toolbar') внутри обработчика кнопки меню, но я получаю неопределенное сообщение для каждого способа, которым я пытаюсь

есть идеи, как получить доступ к текстовому полю #number из кнопки меню?

С уважением

Ответы [ 2 ]

1 голос
/ 17 августа 2011

Я бы определил текстовое поле и кнопку разделения по отдельности, а затем ссылался бы на них таким образом.

this.myTextField = new Ext.form.field.Text ({
    name: 'number',
    itemId: 'number',
    listeners: {
        change: function(t,n){
            console.log(this.mySplitButton) 
        }
    }    
this.mySplitButton= new Ext.button.Split ({
    text: 'Report',
    disabled: true,
    itemId: 'splitbut',
    menu: [{
        text: 'details',
        handler: function() {
            console.log(this.myTextField ) 
        }
    }   
0 голосов
/ 17 августа 2011

Gihan, ваш пункт меню не распространяется от компонента, который имеет функцию вверх. Попробуйте передать область действия функции-обработчику:

handler: function() {
            console.log(this.myTextField ) 
        },
scope: this or this.mySplitButton

установить точку останова внутри функции и проверить ее в firebug. Вы ясно увидите, что означает «это» в этой точке. Также, если вы собираетесь заниматься разработкой в ​​ExtJS, я настоятельно рекомендую вам приобрести Illuminations для разработчиков для Firefox - вам это понравится.

...