Сфера вопроса в extjs 4 - PullRequest
       7

Сфера вопроса в extjs 4

3 голосов
/ 09 января 2012

У меня есть эта древовидная панель, и я хочу вызвать this.getId() метод mainpaneltree изнутри кнопки «Развернуть все» Но все, что я получаю, - это метод undefined. Я попытался поместить scope:this в объекты конфигурации, но безуспешно.

Ext.define('MA.view.patient.Tree', {
extend : 'Ext.tree.Panel',
alias : 'widget.EditPatientTree',
title : 'Simple Tree',
width : 150,
store:'Tree',
dockedItems : [ {
    xtype : 'toolbar',
    items : [ {
        text : 'Expand All',
        scope: this,
        handler : function() {
    //this.expandAll gives "Uncaught TypeError: Object [object DOMWindow] has no method 'getId'"
            this.expandAll();
   //the same error for this.getId();
            this.getId();
        }
    } ]
} ],
rootVisible : false,
initComponent : function() {
    this.callParent(arguments);
}
});

Поэтому мой вопрос заключается в том, как получить ссылку на текущий компонент и вызвать его методы, пока вы находитесь внутри вложенных методов или объектов конфигурации текущего компонента

Ответы [ 2 ]

3 голосов
/ 09 января 2012

У обработчика есть аргументы, которые передаются, 1 из них - обычно кнопка. С помощью кнопки вы можете получить контейнер.

Ext.define('MA.view.patient.Tree', {
extend : 'Ext.tree.Panel',
alias : 'widget.EditPatientTree',
title : 'Simple Tree',
width : 150,
store:'Tree',
dockedItems : [ {
    xtype : 'toolbar',
    items : [ {
        text : 'Expand All',
        scope: this,
        handler : function(button, event) {
            var toolbar = button.up('toolbar'), treepanel = toolbar.up('treepanel');
            treepanel.expandAll();
            treepanel.getId();
        }
    } ]
} ],
rootVisible : false,
initComponent : function() {
    this.callParent(arguments);
}
});
1 голос
/ 09 января 2012

Вы можете использовать такие методы, как up, down для получения ссылок на компоненты, которые являются родительскими или дочерними. В вашем случае вы можете получить ссылку на древовидную панель:

myTree = this.up('treepanel');

Точно так же вы можете использовать метод down, чтобы получить любую дочернюю ссылку.

...