Javascript 调整vbox子项的大小

Javascript 调整vbox子项的大小,javascript,layout,extjs,extjs4.2,vbox,Javascript,Layout,Extjs,Extjs4.2,Vbox,我们最近将ExtJS从4.1更新到4.2。在4.1上,以下代码可以调整此处使用的vbox的子项的大小。我们可以拖动这些子项之间的边界,这两个项都可以调整大小 在4.2中,无法调整这些子对象的大小。当光标指向正确的空间时,甚至不会改变形状 Ext.define('Example.view.NavPanel', { extend: 'Ext.panel.Panel', alias: 'widget.exampleNavPanel', requires: ['Example.v

我们最近将ExtJS从4.1更新到4.2。在4.1上,以下代码可以调整此处使用的vbox的子项的大小。我们可以拖动这些子项之间的边界,这两个项都可以调整大小

在4.2中,无法调整这些子对象的大小。当光标指向正确的空间时,甚至不会改变形状

Ext.define('Example.view.NavPanel', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.exampleNavPanel',
    requires: ['Example.view.example.List', 'Example.view.example2.List', 'Example.view.paneledycji.EditTabPanel'],
    layout: {
        type: 'vbox',
        align: 'stretch',
        pack: 'start'
    },
    items: [
        {
            xtype: 'panel',
            title: 'Navpanel',
            collapsible: true, 
            flex: 1,
            layout: {
                type: 'hbox',
                pack: 'start',
                align: 'stretch'
            },
            items: [
                {xtype: 'exampleList', flex: 1},
                {xtype: 'example2List', flex: 3}
            ]

        },
        {
            xtype: 'editTabPanel',
            flex: 1
        }
    ]
});
我试着加上

resizable:true
给第一个孩子。当光标指向边界时,它使光标改变形状,我可以将其四处拖动。。。但是孩子们不会调整尺寸。当我从first child中删除flex时,我终于可以调整项目的大小,但它没有什么问题:

  • 我可以调整第一个项目的高度和宽度,我只需要高度,这就是它在4.1中的工作方式
  • vbox将为第一个孩子提供所需的空间,如果第一个孩子太大,第二个孩子甚至不在窗口中,这使得无法看到第一个孩子,或者无法调整第一个孩子的大小,因为边框在屏幕外
  • 在两个孩子身上设置minHeight完全没有效果

我希望能够设置上一个孩子的最小和最大高度,最好是百分比,并禁用宽度调整。理想情况下,我还希望能够为两个孩子设置默认大小。我无法使用docs.sencha.com上列出的任何配置组合进行计算。要实现此效果,我必须做些什么?

您可以使用
boxready
事件在初始布局之后删除
flex
属性。这样,您可以从初始自动调整大小中获益,但不会阻止以后调整组件的大小

对于第二个问题,请使用
resizeHandles
选项指定可以抓取用于调整大小的边

Ext.define('Example.view.NavPanel', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.exampleNavPanel',
    layout: {
        type: 'vbox',
        align: 'stretch'
    },
    items: [{
        xtype: 'panel',
        title: 'Navpanel',

        flex: 1,

        resizable: true,
        resizeHandles: 's',

        listeners: {
            single: true,
            boxready: function() {
                delete this.flex;
            }
        }
    },{
        xtype: 'component',
        html: 'editTabPanel',
        flex: 1
    }]
});