#extjs #panels
#extjs #панели
Вопрос:
У меня есть 5 панелей, созданных в ExtJS 4.0. Первоначально 1-я включена и расширена, а вторая включена, но свернута, я хочу включить другую, когда пользователь расширяет предыдущую панель. Допустим, панель 3 отключена, и всякий раз, когда пользователь разворачивает панель 2, панель 3 включается (но остается свернутой), а когда панель 3 расширяется, панель 4 становится включенной и так далее.
Комментарии:
1. Вы пробовали инициализировать следующую панель при обратном вызове? Если идентификатор равен panel_1, вы могли бы знать, как затем инициализировать panel_2 и т. Д.?
Ответ №1:
Похоже, вы должны просто иметь возможность подключать прослушиватели событий expand
, чтобы делать то, что вы хотите. Вы можете создать событие, чтобы создать одного слушателя.
Что-то вроде:
Ext.create('Ext.panel.Panel', {
defaults: {
bubbleEvents: ['expand']
},
items: [
item1,
item2,
item3
],
listeners: {
scope: this,
exand: function(panel) {
var nextPanel = findTheNextPanel(panel);
nextPanel.enable();
}
}
}
Комментарии:
1. это решило проблему! Большое спасибо SeanA. У меня есть еще один вопрос. Все эти панели находятся в окне просмотра, и когда я открываю его в IE, в окне просмотра есть полоса прокрутки, но панели (которые длинные) идут вниз по странице, а полоса прокрутки не прокручивается так сильно, чтобы показать ее полностью, как это исправить?
2. Хммм, мне нужно было бы просмотреть некоторый код для диагностики. Убедитесь, что вы используете a
layout
во всех своих компонентах (обычноfit
в макете, если у вас есть только один элемент), и вам может потребоваться установитьautoScroll: true
, нужно ли отдельной панели прокручивать заданную высоту.3. У меня есть 3 <div>, размещенных следующим образом [панель 1] [панель 2] [панель 3], и у меня есть 3 панели, отображаемые в соответствующих подразделениях, поэтому каждая из 3 панелей имеет внутри 2 панели. Я не объявлял в нем макет, я знаю, что есть способсделайте это без использования CSS для перемещения (скорее всего, с использованием макета таблицы)
4. Не сражайтесь с Ext layout manager. Вместо того, чтобы перемещать ваши divs вручную, используйте a
Ext.Container
с определеннымlayout
, чтобы делать то, что вы хотите (внешний контейнер — это просто DIV в dom). Просмотрите менеджер компоновки здесь: docs.sencha.com/ext-js/4-0 /#!/пример/макет-браузер/…