Sencha Touch 之 Ext.fly方法的使用
Ext.fly方法是Ext.js 4中的flyweight技术,该技术在浏览器中为使用Ext.fly方法的元素节点开辟一块内存,下一次使用Ext.fly方法的元素节点将占据同一块内存,即覆盖前一次的元素节点。可以理解为开辟一块共享内存,供元素节点使用。示例:
HTML代码:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>一个简单的示例面板</title>
<link rel="stylesheet" type="text/css" href="../../css/sencha-touch.css">
<script src="../../sencha-touch.js"></script>
<script src="app-all.js"></script>
</head>
<style type="text/css">
.colorRed {
color:blue;
}
</style>
<body>
<div>Hello, World</div>
</body>
</html>
JS代码:
Ext.application({
name : 'myApp',
icon : '../../images/icon.png',
glossOnIcon : false,
phoneStartupScreen : '../../images/phone_startup.png',
tabletStartupScreen : '../../images/tablet_startup.png',
launch : function() {
//panel以div元素的形式显示在页面中
var panel = Ext.create('Ext.Panel', {
//或var panel = Ext.create('Ext.lib.Panel', {
fullscreen : true, //指定面板尺寸是否自动扩展为浏览器窗口的尺寸
id : 'myPanel', //id将作为面板元素生成的div层的id,切记唯一性
html : '一个简单的示例面板' //生成html代码,这段代码将被插入div层中
});
/*
还可以
var panel = new Ext.Panel({
});
或
var panel = new Ext.lib.Panel({
});
*/
var subPanel = new Ext.Panel({
id: 'subPanel',
html: 'panel面板中的子面板'
});
Ext.Viewport.add(panel); //在这里它可以省去
//Viewport和panel类似,也是以div形式显示在页面中,但它在launch之前就被创建,且可以向它里面添加其他组件
panel.add(subPanel);
var newPanel = Ext.get('myPanel');
//var newPanel = Ext.fly('myPanel');
//Ext.fly('subPanel');
newPanel.addCls('colorRed');
}
});
最终结果会发现,父面板和子面板的字体颜色都变为蓝色。下面使用fly方法:
Ext.application({
name : 'myApp',
icon : '../../images/icon.png',
glossOnIcon : false,
phoneStartupScreen : '../../images/phone_startup.png',
tabletStartupScreen : '../../images/tablet_startup.png',
launch : function() {
//panel以div元素的形式显示在页面中
var panel = Ext.create('Ext.Panel', {
//或var panel = Ext.create('Ext.lib.Panel', {
fullscreen : true, //指定面板尺寸是否自动扩展为浏览器窗口的尺寸
id : 'myPanel', //id将作为面板元素生成的div层的id,切记唯一性
html : '一个简单的示例面板' //生成html代码,这段代码将被插入div层中
});
/*
还可以
var panel = new Ext.Panel({
});
或
var panel = new Ext.lib.Panel({
});
*/
var subPanel = new Ext.Panel({
id: 'subPanel',
html: 'panel面板中的子面板'
});
Ext.Viewport.add(panel); //在这里它可以省去
//Viewport和panel类似,也是以div形式显示在页面中,但它在launch之前就被创建,且可以向它里面添加其他组件
panel.add(subPanel);
//var newPanel = Ext.get('myPanel');
var newPanel = Ext.fly('myPanel');
Ext.fly('subPanel');
newPanel.addCls('colorRed');
}
});
最终结果只有子面板的字体颜色变为蓝色。
虽然fly方法在一定程度上可以提高应用程序的性能,但是我们应该为那些在代码中只引用一次、之后不再引用的元素使用Ext.fly方法。否则的话应该使用Ext.get方法,以避免一些意想不到的bug。
Sencha Touch 之 Ext.fly方法的使用的更多相关文章
- Sencha Touch 之 Ext.ComponentManager.get方法使用
HTML代码: <!doctype html> <html> <head> <meta charset="utf-8"> <t ...
- Sencha touch中Ext.List的使用及高度自适应
最近在做 Sencha 的一个项目,需要用到 Ext.List 来列出所需商品及相关信息,平时我们使用 Ext.List 都是使用 fullscreen:true 来设置 List 全屏显示, 但 ...
- 【翻译】在Ext JS和Sencha Touch中创建自己定义布局
原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置 ...
- 【翻译】在Ext JS和Sencha Touch中创建自定义布局
原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置 ...
- 【翻译】为Ext JS和Sencha Touch开发人员准备的应用程序监测(App Inspector)
和其他的Sencha开发人员一样,我会花费大约半天的时间在我喜欢的IDE工具上编写JavaScript,而另一半时间则是在浏览器上测试和调试我的应用程序.在过去几年,每一个主要的浏览器都已大为改善.现 ...
- 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之三
原文:Getting Started with Sencha Touch 2: Build a Weather Utility App (Part 3) 作者:Lee BoonstraLee is a ...
- 俺的新书《Sencha Touch实战》终于出版了
内容简介:Sencha框架是第一个基于HTML 5的移动也能给予框架,可以让Web应用看起来像网络应用.美丽的用户 界面 组件和丰富的数据管理,全部基于最新的HTML 5和CSS 3的Web标准,全部 ...
- SenCha Touch 与 EXTJS 安装Myeclipse 插件
http://www.cnblogs.com/jirimutu01/default.html 关于SenchaEclipsePlugin插件的安装和使用 使用过eclipse开发java程序的人都知道 ...
- [Phonegap+Sencha Touch] 移动开发26 Android下的sencha touch程序,转屏时,Ext.Viewport不能触发orientationchange事件的解决的方法
Sencha touch 2.4.2 已经解决问题了. 比方你为Ext.Viewport的orientationchange事件加入了一个监听方法: Ext.Viewport.on('orientat ...
随机推荐
- EXT属性
Extjs & Ext.Net 弹出整个浏览器对话框的方法 top.Ext.Msg.alert("值"); top.Ext.Msg.confirm("值" ...
- IBATIS处理typeHandler类容易范的SQLException总结
1. java.sql.SQLException: 无效的列类型 原因: A. ibatis的IN,OUT参数.或者typeHandler类中传入的参数值数据类型与Oracle自定义对象中的属性值的数 ...
- CSS3实现漂亮ToolTips
演示Demo 5种效果的主要css如下: /* transform:向元素应用2D或3D转换; transform-origin属性只有在定义了transform以后才生效 */ .tooltip-e ...
- Do Palapala (this)
Description 伟大的中国人民有宝箱容量为S(0<=S<=20000),有m个物品(0<m<=30,每个物品有一个体积(正整数).任取若干个装入箱内,使箱子的剩余空间为 ...
- 自定义alert,confirm,prompt事件,模仿window.alert(),confirm(),prompt()
css代码: /*custom_alert and custom_confirm*/ ; } ;;background-color: #585858; padding: 30px 30px; bord ...
- ApiGen4.1 windows安装教程
一. ApiGen4.1版本介绍 1.ApiGen介绍 ApiGen是自动生成PHP项目的阅读文档工具. 用于从PHP源代码创建专业的API文档,类似于phpDocumentor/phpDoc. Ap ...
- android PopupWindow显示位置
PopupWindow的显示及位置设置 window.showAtLocation(parent, Gravity.RIGHT | Gravity.BOTTOM, 10,10); 第一个参数指定Pop ...
- RHEL安装时加载第三方raid驱动
IBM x3650 M3服务器做完RAID之后,不能直接的安装Linux系统,会报出没有硬盘的错误 过程如下: 1.到IBM的官方网站下载device drive 下载后的为:ibm_dd_sraid ...
- Struts2 二、为Action的参数注入值
为Action参数注入值,主要使用在的场景为,Action的一个参数的值不是固定的是可以改变的,所以不能直接写在Action中,可以通过Struts配置的方式将值配置到Struts中,然后通过注入的方 ...
- SQLServer,仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表xx中的标识列指定显式值
情景: 如果此表的主键或者其中有一个列使用了 IDENTITY(1,1) 自增长时,但又想手动为此列指定值时,当用如下解决方案: set identity_insert 表名 ON 使用此命令把表的 ...