Панели ExtJS включаются при расширении

#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 /#!/пример/макет-браузер/…