ExtJS: Невозможно вызвать findById на панели инструментов, добавленной apply () - PullRequest
0 голосов
/ 08 августа 2010

У меня есть страница с панелью инструментов, которая добавляется с помощью apply следующим образом (сокращенный код, много ненужных вещей в оригинале):

var obj = Ext.extend(Ext.Panel,{
    initComponent:function(){
        Ext.apply(this,{
            layout:'card',
            itemId:'contactDetails',
            border:false,
            activeItem:0,
            tbar: new Ext.Toolbar({
                items:[{text:'New'},{text:'Edit',id:'editButton'}]
            })
        });
        obj.superclass.initComponent.apply(this);

     }, load:function() {
         this.tbar.findById('editButton').toggle(false); //Javascript error here about findById not being a function.
     }
   });

Выше также не может быть синтаксически правильным. Это в моем коде (по крайней мере, в той степени, в которой никакие ошибки javascript, кроме большой, не выбрасываются.)

1 Ответ

0 голосов
/ 08 августа 2010

Во-первых, вам не нужно переопределять initComponent только для предоставления настроек по умолчанию.Это будет работать так же, и будет проще:

var obj = Ext.extend(Ext.Panel,{
    layout:'card',
    itemId:'contactDetails',
    border:false,
    activeItem:0,
    tbar: new Ext.Toolbar({
        items:[{text:'New'},{text:'Edit',id:'editButton'}]
    })
});

(поцарапайте мой предыдущий ответ, я неправильно прочитал ваш код.)

Это также может решить вашу проблему - поскольку вы переопределяете initComponentв вашем коде вы должны вызывать суперкласс initComponent в вашем методе, иначе все не будет работать.При переопределении initComponent вашего кода вы должны делать следующее:

initComponent: function(){
    Ext.apply(this,{
        layout:'card',
        itemId:'contactDetails',
        border:false,
        activeItem:0,
        tbar: new Ext.Toolbar({
            items:[{text:'New'},{text:'Edit',id:'editButton'}]
        })
    });
    obj.superclass.initComponent.apply(this, arguments);
}

Кроме того, вы по какой-то причине переопределяете существующий метод Panel.load()?Или вы пытаетесь добавить какую-то другую функциональность и по ошибке выбрали имя существующего метода?

EDIT : Должен был заметить это раньше, но конфигурация tbar недоступна после рендеринга какдействительное свойство.Из документов для tbar: «Чтобы получить доступ к верхней панели инструментов после рендеринга, используйте getTopToolbar »

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...