Как изменить параметры конфигурации (minWidth) на лету в ExtJS 4.0.5?

1

У меня есть компонент Ext.window.Window с minHeight и minWidth, установленный в конфигурационных параметрах, например:

config: {
         minWidth: 860,
         minHeight: 580
        },

Теперь я хочу изменить эти свойства в такой функции:

Ext.getCmp('x').setMinWidth(1280);

но этот Setter еще не существует в ExtJS 4.0.5. (В более поздних версиях он делает)

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

Ext.getCmp('x').config.minWidth = 1280;

но он также не работает.

Заранее спасибо.

  • 0
    Создайте скрипку Сенча, пожалуйста
Теги:
extjs
single-page-application
extjs4

1 ответ

0

В окне ExtJS вы можете использовать метод updateLayout после изменения значения конфигурации.

updateLayout обновляет эту компоновку компонента. Если это обновление влияет на этот компонент ownerCt, этот компонент updateLayout метод будет вызываться для выполнения макета вместо этого. В противном случае только этот компонент (и его дочерние элементы) будет иметь макет.

Здесь я создал и скрипку sencha sciddle. Он покажет, как работает, надеюсь, это поможет вам решить вашу проблему или выполнить ваши требования.

Ext.create('Ext.window.Window', {
    title: 'Hello',
    minWidth: 400,
    minHeight: 300,
    layout: 'vbox',
    items: [{ // Let put an empty grid in just to illustrate fit layout
        xtype: 'grid',
        flex: 1,
        width: '100%',
        border: false,
        store: {
            fields: ['name', 'email', 'phone'],
            data: {
                'items': [{
                    'name': 'Lisa',
                    "email": "[email protected]",
                    "phone": "555-111-1224"
                }, {
                    'name': 'Bart',
                    "email": "[email protected]",
                    "phone": "555-222-1234"
                }, {
                    'name': 'Homer',
                    "email": "[email protected]",
                    "phone": "555-222-1244"
                }, {
                    'name': 'Marge',
                    "email": "[email protected]",
                    "phone": "555-222-1254"
                }]
            },
            proxy: {
                type: 'memory',
                reader: {
                    type: 'json',
                    root: 'items'
                }
            }
        },
        columns: [{
            text: 'Name',
            dataIndex: 'name'
        }, {
            text: 'Email',
            dataIndex: 'email',
            flex: 1
        }, {
            text: 'Phone',
            dataIndex: 'phone'
        }],
    }, {
        xtype:'button',
        text: 'Update min height and width with Random Number',
        height: 40,
        margin: 10,
        width:'100%',
        renderTo: Ext.getBody(),
        handler: function () {
            /**
             * Returns a random integer between min (inclusive) and max (inclusive)
             * Using Math.round() will give you a non-uniform distribution!
             */
            function getRandomInt(min, max) {
                return Math.floor(Math.random() * (max - min + 1)) + min;
            }

            var num = getRandomInt(300, 600),
                wind = this.up('window');
            wind.minHeight = num;
            wind.minWidth = num;
            wind.updateLayout();
        }
    }]
}).show();
  • 0
    Казалось, это работает. Изменение размера окна ограничено новыми размерами minWidth и minHeight, однако «предварительный просмотр изменения размера» (пунктирная линия, которую вы видите, удерживая границу окна и перетаскивая ее внутрь), по-прежнему позволяет перетаскивать до старых размеров «min». Хотя при отпускании левой кнопки мыши размер окна привязывается к новым "минимальным" измерениям. Извините, если я не могу объяснить проблему достаточно ясно. Это довольно большой проект, поэтому мне немного сложно разобрать его на скрипке.
  • 0
    Я только что проверил, и это происходит в вашей сенча скрипке тоже. После увеличения minWidth или minHeight предварительный просмотр изменения размера по-прежнему позволяет перетаскивать дальше.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню