理解了layout之后,再看看FormPanel源码,发现它指定了layout:'form',而FormPanel又是Container的子孙类,所以,它就是用了FormLayout布局。只是通过FormPanel,将FormLayout所需要的配置都做了些初始化提取出来了,便于开发者使用和理解。所以,在FormPanel渲染后就会用FormLayout来进行doLayout功能。
所以写成下面两种方式的代码,效果是一样的:
一、用FormPanel
- Ext.onReady(function(){
- var panel = new Ext.FormPanel({
- renderTo:'hello',
- title:'容器组件',
- width:300,
- hideLabels:false,
- labelAlign:'right',
- height:120,
- defaultType:'textfield',
- items:[{
- fieldLabel:'请输入姓名',
- name:'name'
- },{
- fieldLabel:'请输入地址',
- name:'address'
- },{
- fieldLabel:'请输入电话',
- name:'tel'
- }]
- });
- });
Ext.onReady(function(){
var panel = new Ext.FormPanel({
renderTo:'hello',
title:'容器组件',
width:300,
hideLabels:false,
labelAlign:'right',
height:120,
defaultType:'textfield',
items:[{
fieldLabel:'请输入姓名',
name:'name'
},{
fieldLabel:'请输入地址',
name:'address'
},{
fieldLabel:'请输入电话',
name:'tel'
}]
});
});
二、只指定layout:'form'
- Ext.onReady(function(){
- var panel = new Ext.Panel({
- renderTo:'hello',
- title:'容器组件',
- width:300,
- layout:'form',
- hideLabels:false,
- labelAlign:'right',
- height:120,
- defaultType:'textfield',
- items:[{
- fieldLabel:'请输入姓名',
- name:'name'
- },{
- fieldLabel:'请输入地址',
- name:'address'
- },{
- fieldLabel:'请输入电话',
- name:'tel'
- }]
- });
- });
本文深入探讨了ExtJS中FormPanel组件的使用方法及其与FormLayout布局的关系。通过实例对比了FormPanel与直接指定layout:'form'的效果,揭示了两者在实际应用中的等效性。

6万+

被折叠的 条评论
为什么被折叠?



