2015-08-05 1 views
0

Привет, У меня есть проблема с окном просмотра extjs. Я создал кнопку и попытался ссылаться на восточную панель, но это кажется неправильным способом доступа к панели. В инструментах разработчика Chrome появилось сообщение «Uncaught TypeError: Невозможно прочитать свойство« получить »из неопределенного» Я google this thread , но мой код по-прежнему не работает.ExtJS как ссылаться на панель области в окне просмотра

мой видовой экран:

var viewport = Ext.define('Fiddle.view.Viewport', { 
extend: 'Ext.container.Viewport', 
layout: 'border', 

items: [{ 
    // xtype: 'container', 
    // itemId: 'header', 
    region: 'north', 
    //html: '<h1 class="x-panel-header">Page Title</h1>', 
    border: false, 
    margin: '0 0 5 0', 
    items: [{ 
     xtype: 'button', 
     text: 'collapse', 
     handler: function() { 
      var east = viewport.items.get('e'); 
      if (!!east.collapsed) { 
       east.expand(); 
      } else { 
       east.collapse(); 
      } 
     } 
    }] 
}, { 
    region: 'east', 
    title: 'east Panel', 
    itemId: 'e', 
    //collapsible: true, 
    //collapseMode: 'mini', 
    floatable: false, 
    html: 'Information goes here', 
    split: true, 
    placeholder:{ 
     width:20, 
     items:[{ 
      xtype:'button', 
     }] 
    } 
}, { 
    region: 'center', 
    xtype: 'container', 
    layout: 'fit', 
    items: { 
     html: 'Center' 
    } 
}] 
}) 

Fiddle

ответ

0

Вместо viewport.items.get('e') используйте down:

viewport.down('#e') 

Update:

В вашем примере кода , viewport ссылается на окно просмотра класс, не экземпляр. Для того, чтобы получить доступ к экземпляру с помощью кнопки щелкнул, используйте:

b.up('viewport').down('#e') 

Полный пример: https://fiddle.sencha.com/#fiddle/rl2

+0

еще не работает. Я установил autoCreateViewport: true. Проблема здесь? –

+0

Что он тогда возвращается? Вы проверили консоль? 'autoCreateViewport' не имеет значения, поскольку' viewport' по-прежнему ссылается на ваш видовой экран, а на восточной панели есть элемент itemId: 'e''. – Greendrake

+0

Uncaught TypeError: viewport.down не является функцией –

0

Избегайте использования Itemid годов. Не b.up('viewport').down('container[region=east]'); сделать трюк?

+0

Привет, Тарабас. Я попробовал ваше предложение и протестировал 'b.up ('viewport'). Down ('container [region = east]');' Он может сделать трюк, но в этом случае элементы-заполнители будут отображаться в неправильном месте. –

+0

Это странно. Ссылка на экземпляр должна быть ссылкой на экземпляр, независимо от того, какой селектор вы используете. Ну, я никогда не использовал такой заполнитель, может быть, ваша проблема там. – Tarabass

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