#javascript #extjs
#javascript #extjs
Вопрос:
У меня есть панель с разметкой «границы», имеющая области «центр» и «север». Я хочу программно свернуть северный регион, и, согласно форуму, способ сделать это:
container.layout.north.collapse();
Однако контейнер.макет — это строковый объект, таким образом, контейнер.layout.north выдает мне нулевой объект.
У кого-нибудь есть 2-секундный указатель на то, как получить дескриптор правильного объекта layout для вызова collapse()?
Ответ №1:
Самым дешевым способом было бы получить доступ к нужной вам панели с помощью вызова Ext.getCmp()
. Для вас container.layout
не определено, потому что это не объект Ext.Component. Задайте идентификатор для вашей панели границ или любой панели, к которой вам нужен доступ.
var panel = Ext.getCmp('BorderPanelId');
panel.layout.north.collapse();
Другим способом было бы использовать идентификатор северной панели. В этом случае вы будете:
var panel = Ext.getCmp('NorthPanelId');
panel.collapse();
Другим способом было бы сделать систему пользовательской ref
. Установите свойство ref для ваших панелей. И если у вас есть доступ к владельцу компонента.. вы можете просто использовать ссылку для ссылки на панель или другие компоненты.
Комментарии:
1. панель. макет не равен нулю. он содержит объект типа string. как будто объект layout еще не создан. я на 97,43% уверен, что это как-то связано с тем фактом, что я пытаюсь свернуть () панель, которая еще не показана (она находится в нижней части стека макетов ‘card’).
Ответ №2:
В Extjs 4 вы можете сделать:
panel.getLayout().regions.north.collapse();
Затем для повторной активации области:
panel.getLayout().regions.north.expand();
Ответ №3:
Используя Ext JS 4, вы можете сделать:
container.down('[region=north]').collapse();
Это самый простой и рекомендуемый способ.