投放本站广告请联系:
extjscn#126.com
Ext JS 4预览:重构和规范渲染过程
在过去的4年里,Ext js的代码库不断在发展,新的组建不断被添加,编码标准也在不断的改进。在这期间,一个很重要的事情就是必须不断的重构较旧的组件以保持同步。
在Ext js 4之前,渲染组件并没有统一标准的方式。Panels的主要渲染方式是创建它们所需的元素并直接添加到DOM节点上。而Fields的渲染,则是通过配置 DomHelper的autoEI,然后通过包裹特定HTML片段实现的。Grids则主要通过模版建立元件,然后渲染到页面。
在Ext JS 4,我们的目标是将这些渲染方法统一为使用XTemplate和DomQuery进行渲染。该渲染方法不单易于使用,而且让开发人员在开放自己的组件时更灵活。该渲染方法将成为所有组件的标准渲染方式。
介绍renderTpl,renderData和renderSelector
Ext JS 4的所有组件都会被渲染成一个带有id的div元件和基类组件(cls、cmpCls和ui)。如果创建一个组件需要额外的元件,那么它将通过 XTemplate (renderTpl)来处理。XTemplate所需的数据将通过 renderData对象读取,并在组件实例中通过renderSelectors方法创建一个Ext.Element对象。 renderSelector使用标准的css选择器,其作用范围是基本的div元件。这些Ext.Element对象将作为组件生命周期的一部分,直到组件被销毁时才自动销毁。下面的例子将有助于说明如何创建定制组件:
简单的自定义图标组件的例子:
IconComponent = Ext.extend(Ext.Component, { iconCls: 'myIcon', renderTpl: '<img alt="" src="{blank}" class="{iconCls}"/>', onRender: function() { Ext.applyIf(this.renderData, { blank: Ext.BLANK_IMAGE_URL, iconCls: this.iconCls }); Ext.applyIf(this.renderSelectors, { iconEl: '.' + this.iconCls }); IconComponent.superclass.onRender.call(this); }, changeIconCls: function(newIconCls) { if (this.rendered) { this.iconEl.replaceClass(this.iconCls, newIconCls); } this.iconCls = newIconCls; } });
renderTpl 定义了一个XTemplate对象,它有两个需要在渲染时从renderData 获取数据的变量“blank”和“iconCls”的。此外,在渲染时,将在实例中创建一个“iconEl”的Ext.Element对象。当组件渲染完成时,在changeIconCls方法将可以使用“iconEl ”对象。
转自黄灯桥博客:
http://blog.csdn.net/tianxiaode/archive/2010/12/14/6074514.aspx
- 关键字:
- 要发表评论,请先登录