2014-01-04 5 views
1

Пожалуйста, помогите понять, почему комментируемого ниже код не работает на ExtJS 3.4:Схватив компонент ExtJS

var mywin=new Ext.Window({ 
     width : 200, 
     height: 150, 
     title : 'Accordion', 
     layout: 'accordion', 
     border: false, 
     items: [ 
      panel1, 
      panel2 
     ] 
    }).show(); 

    <!--Ext.getCmp('mywin').add({ - THIS DOES NOT WORK ,while below works--> 

    mywin.add({ 
     title: 'Appended panel', 
     id: 'addedPanel', 
     html : 'Add Me!' 
    }); 
    mywin.doLayout(); 

ответ

2

mywin является ссылкой на окно объекта, который вы создали. Это просто нормальная конструкция JS с использованием назначения переменных.

Ext.getCmp('mywin') пытается найти компонент, имеющий id объект mywin. Как правило, рекомендуется избегать использования Ext.getCmp, если только вы никогда не создадите экземпляр экземпляра, поскольку он должен быть глобально уникальным.

0

Ext.getCmp ('x') работает только в том случае, если x является идентификатором какого-либо компонента (панель или окно, которое вы хотите использовать). Просто укажите поле id (id: 'component_Id) и используйте Ext.getCmp для идентификатора компонента. Во многих сценариях вы также можете использовать lookupReference, пожалуйста, проверьте для него документы extjs.

-1

Вы можете попробовать использовать следующие для получения ссылки на окна (хотя у вас уже есть в вашей mywin переменной):

var winInstance = Ext.ComponentQuery.query('mywin')[0]; 
    winInstance.add({ 
     title: 'Appended panel', 
     id: 'addedPanel', 
     html : 'Add Me!' 
    }); 

Но проблема была вы пытаетесь ссылаться на ваш оконный компонент с помощью имя переменной, так, как это упоминалось в предыдущих ответах, вам нужно будет использовать itemId: 'mywin' или id: 'mywin', так как в его стойке действительно нет компонента с itemId или id с этим именем.

+0

Зачем вам запрашивать компонент, если у вас уже есть ссылка на него? –

+0

Я знаю, что у него уже есть ссылка на него, я упомянул об этом в своем посте, я ответил на часть его вопроса относительно получения ссылки на его окно, возможно, мой ответ был недостаточно ясным. Виноват. В частности, часть Ext.getCmp. –

Смежные вопросы