zoukankan
html css js c++ java
Ext架构分析(5)Layout初识:ContainerLayout
如果学习了Container,你回发现,在Ext2.0中,Container和Layout的关系是密不可分的。任何Container都需要在render方法中使用layout对象进行布局。
让我们先看一下所有layout的父类:ContainerLayout。
实际上,对容器及其item的渲染都是在layout对象的layout方法中实现的。而layout方法是在resize事件中触发的,基于性能的考虑,可以通过配置bufferResize属性实现延迟layout:
onResize:
function
()
{
if
(
this
.container.collapsed)
{
return
;
}
var
b
=
this
.container.bufferResize;
if
(b)
{
if
(
!
this
.resizeTask)
{
this
.resizeTask
=
new
Ext.util.DelayedTask(
this
.layout,
this
);
this
.resizeBuffer
=
typeof
b
==
'
number
'
?
b :
100
;
}
this
.resizeTask.delay(
this
.resizeBuffer);
}
else
{
this
.layout();
}
}
lyout方法会遍历所有的Container子元素并对其进行render:
renderItem :
function
(c, position, target)
{
if
(c
&&
!
c.rendered)
{
c.render(target, position);
if
(
this
.extraCls)
{
var
t
=
c.getPositionEl
?
c.getPositionEl() : c;
t.addClass(
this
.extraCls);
}
if
(
this
.renderHidden
&&
c
!=
this
.activeItem)
{
c.hide();
}
}
else
if
(c
&&
!
this
.isValidParent(c, target))
{
if
(
this
.extraCls)
{
c.addClass(
this
.extraCls);
}
if
(
typeof
position
==
'
number
'
)
{
position
=
target.dom.childNodes[position];
}
target.dom.insertBefore(c.getEl().dom, position
||
null
);
if
(
this
.renderHidden
&&
c
!=
this
.activeItem)
{
c.hide();
}
}
}
查看全文
相关阅读:
kingbase8d常见问题
kibana-7.9.1安装
ElasticSearch-7.9.1
在线分析-jstack
Wireshark常用过滤条件
shiro登录认证过程
查看mysql库中所有表的大小和记录数
linux设置定时任务crontab
POI 使用常见问题
Java源码之String-构造方法
原文地址:https://www.cnblogs.com/meetrice/p/1206120.html
最新文章
Go-json解析时间格式
浅析VO、DTO、DO、PO的概念、区别和用处
第一个django项目
django中PIL库的学习
Jupyter Notebook
pandas和numpy学习
xlsxwriter EXCEL文件的写入
Django运行
windows 10下安装Mysql以及使用
文件操作
热门文章
作业大礼包
备份
docker registry 删除镜像 垃圾回收
docker 安装镜像记录
win10彻底关闭/开启hyper-v命令
Win10 WSL2 安装Docker
MYSQL查询一个表中的所有字段
安装rabbitmq
docker 容器自动启动设置
mybatis项目升级到mybatis-plus项目
Copyright © 2011-2022 走看看