2013-08-30 3 views
-2

У меня есть Viewport в приложении ExtJs. Когда rqstPanel свернут, rsltsPanel активируется. Но это не изменение размера.Проблема автоматически регулирует высоту внутри окна просмотра Extjs 4.2.1

Ext.create('Ext.Viewport', { 
layout: 'border', 
align: 'center', 
border : 0, 
defaultAlign : 'center', 
items: [ 
{ 
    region: 'north', 
    align: 'center', 
    html : 'some html ' 
}, 
{ 
    region: 'center', 
    align: 'center', 
    minHeight: 500, 
    items: [rqstPanel, rsltsPanel] 
} 
] 
}); 

Я также попытался:

Ext.create('Ext.Viewport', { 
layout: 'border', 
align: 'center', 
border : 0, 
defaultAlign : 'center', 
items: [ 
{ 
    region: 'north', 
    align: 'center', 
    html : 'some html' 
}, 
{ 
    region: 'center', 
    align: 'center', 
    minHeight: 500, 
    items: [rqstPanel] 
} 
{ 
    region: 'south', 
    align: 'center', 
    minHeight: 500, 
    items: [rsltPanel] 
} 
] 
}); 
+1

Как вы «рушитесь» rqstPanel? Что такое объявление rqstPanel и rsltPanel? Почему вы ожидаете изменения размера rsltsPanel? В центральной панели нет макета. Какой элемент вы хотите изменить? Вам нужно предоставить намного больше деталей. – oldwizard

+1

Возможно, вы захотите попробовать продвинуть свои подэлементы, чтобы быть вашими панелями макета. –

+0

@pcguru Я ругаюсь, вызывая метод свернуть на панели. Вот пример: https://fiddle.sencha.com/#fiddle/dm – fastcodejava

ответ

3

Как сказал Томас, пример вы ссылки на работы только потому, что элементы расположены в окне непосредственно. В окне просмотра используется border layout. Ваш rqstPanel является подэлементом панели, и эта панель затем находится в макете границы. Поэтому, когда rqstpanel свернут, он является родительским, панель не рушится.

Так пример имеет эту иерархию:

Viewport (layout: 'border') 
- Panel (north) 
- Panel (center) 
- Panel (south) 

Когда FXP центральная панель свернута, расположение окна просмотра будет изменять размер братьев и сестер, чтобы заполнить свободное пространство.

У вас есть это:

Viewport (layout: 'border') 
- Panel (north) with content 'some html' 
- Panel (center) 
    - Panel rqstPanel 
- Panel (south) 
    - Panel rsltPanel 

Это связано с xtype по умолчанию является «панель» и вы добавляете rqstPanel как ребенок этой панели Повсеместно это items конфигурации. В этом коде создается панель, которая находится между rqstPanel и видовым окном.

{ 
    region: 'center', 
    align: 'center', 
    minHeight: 500, 
    items: [rqstPanel] 
} 

Так что, когда rqstPanel свернут его родители (в центре) не изменяются в окне просмотра, так как все предметы у него есть (север/центр/юг) имеют одинаковое значение и Виль принимать равное количество высоты.

В основном то, что сказал Томас, решит вашу проблему. Не позволяйте rqstPanel и rsltPanel быть подэлементами панелей, которые являются элементами в окне просмотра - добавьте их непосредственно в качестве дочерних элементов.

В основном вы хотите добавить свой rqstPanel напрямую.

Ext.define("MyApp.view.RequestPanel", { 
    extend: "Ext.panel.Panel", 
    alias: "widget.requestPanel", 
    // other configs for this panel 
}); 

Ext.define("MyApp.view.ResultsPanel", { 
    extend: "Ext.panel.Panel", 
    alias: "widget.resultsPanel", 
    // other configs for this panel 
}); 

Ext.create('Ext.Viewport', { 
    layout: 'border', 
    align: 'center', 
    border : 0, 
    defaultAlign : 'center', 
    items: [ 
     { 
      region: 'north', 
      align: 'center', 
      html : 'some html' 
     }, 
     { 
      xtype: 'requestPanel', 
      region: 'center', 
      align: 'center', 
      minHeight: 500 
     }, 
     { 
      xtype: 'resultsPanel', 
      region: 'south', 
      align: 'center', 
      minHeight: 500 
     } 
    ] 
}); 
+0

Это действительно хороший ответ. Я не могу поместить весь код прямо в окно просмотра. После обработки представления в панели запроса я делаю это: 'rqustPanel.ownerCt.collapse();' Кажется, это помогает, но 'rsltsPanel' по-прежнему не показывает полное тело. – fastcodejava

+1

Используйте 'layout: fit' на южной панели. Это заставит rsltsPanel расти/сокращаться с его родителем. В настоящее время у вас нет набора макетов, что означает, что используется значение по умолчанию для автоматического использования, т. Е. Вообще не размер компонента на основе родителя. – oldwizard

+0

макет: идеально подходит. Когда я рушаюсь в первый раз, панель очень хорошо вписывается в область южных панелей. Но если я вручную разворачиваю панель, то панель, похоже, не подходит южному региону. Благодарим вас за помощь. – fastcodejava

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