原文:http://www.sencha.com/forum/showthread.php?164313-Ext-JS-4.1-Beta-1-Now-Available
我们非常高兴现在可以在社区发布Ext JS4.1.0 Beta 1!此版本已修复上百个错误。作为第一个测试版,有几个问题,我们想解决,但我们最后决定,它们并不是关键问题,足以延迟新版本的发布。这些都是已记录在发行说明文件部分的已知问题。
你可以在这里下载ExtJS 4.1 beta: http://cdn.sencha.io/ext-4.1.0-beta-1.zip
我想花一点时间来讲述已更改的内容。其中一些相对于4.1 PR1是新的,而其他是在4.1 PR1引入但并未涉及的。
对于其他细节,请参阅我的博客文章:http://www.sencha.com/blog/whats-new-in-ext-js-4-1/ (译文:http://blog.csdn.net/tianxiaode/article/details/7045353)
布局
失败
4.1的布局引擎设计,会因配置不当或错误而导致布局运行未能完成其所有计算。当发生这种情况时,布局会简单的停止并将部分结果刷新到DOM中。布局在某些情况下,可能只完成了99%的计算,从而造成不被发现的错误或出现轻微的视觉异常。而在其它情况下,可能会过早失败,从而导致一个明显破碎状态的UI(很象以前版本中在布局过程中产生yieldJS错误)。
(译者注:这是严重问题啊)
诊断
如果你怀疑布局失败了,第一步要做的是做布局诊断。要完成这个工作,使用“ext-all-dev.js”替代“ext-all.js”,并添加两个额外的脚本文件,代码如下:
<script type="text/javascript" src="/extjs41/ext-all-dev.js"></script> <script type="text/javascript" src="/extjs41/src/diag/layout/Context.js"></script> <script type="text/javascript" src="/extjs41/src/diag/layout/ContextItem.js"></script>
显然,ExtJS 4.1的路径会因你的环境而有所不同。上述修改,可在Firebug或Web Inspector的控制台中看到诊断日志。如果是IE,日志会存储在内存中,可在页面加载后,在地址中输入以下命令显示:
javascript:void(Ext.log.show())
这可以创建一个“书签”。日志被限制为750行,你可以按照以下代码进行修改:
<script type="text/javascript" src="/extjs41/ext-all-dev.js"></script> <script type="text/javascript"> Ext.log.max = 1500; </script>
模型和idProperty
模型一个共同的配置错误就是没有指定一个合适的“idProperty”。这个属性是用来标识模型主键的,但这很容易被忘记。因为“idProperty”的默认值为“ID”。在4.0,如果模型没有相同名字的字段,早某些情况下会产生JS错误。在4.1已修正这个错误。如果没有定义这个字段,会自动定义该字段为字符串属性。
该错误的修复也产生了另外一个问题,你会发现模型多了一个“id”属性。最好的解决办法是正确配置“idProperty”属性的值。
字段及它们的布局
在ExtJS 4.1 PR1以及现在的beta 1,字段和字段布局都进行了几次内部修改。在讲述这个之前,我首先要介绍的是与字段渲染有关的几个新配置项。我们和几个客户讨论过,需要替换字段的渲染逻辑(如“renderTpl”、“fieldSubTpl”或“labelableRenderTpl”)以实现他们应用中的基本调整。在这期间,从4.0以来,这些属性已经在内部被重写及修改几次了。我们想提供一个更稳定的方式来添加字段而不是继续这个周期。
在Beta 1,我们增加了几个“微”渲染模板去装饰字段。通常,这些都是简单的标记字符串,但它们完全支持XTemplates。这些装饰如下:
Fields: inputAttrTpl
Labelable: beforeLabelTpl, afterLabelTpl, beforeSubTpl, afterSubTpl, beforeLabelTextTpl, afterLabelTextTpl and labelAttrTpl
Checkbox: beforeBoxLabelTpl, afterBoxLabelTpl, beforeBoxLabelTextTpl, afterBoxLabelTextTpl, boxLabelAttrTpl
HtmlEditor: beforeTextAreaTpl, afterTextAreaTpl, beforeIFrameTpl, afterIFrameTpl, iframeAttrTpl
在/examples/form/dynamic.html和/examples/form/contact-form.html这两个示例,会演示如何使用“afterLabelTextTpl”来渲染一个简单的“必填字段”。它们在渲染中的作用可从名字中看出来。如果想了解更详细的信息,可阅读fieldSubTpl或labelableRender的相关文档。如果需要其它有用的装饰,请告诉我们。
在4.0和4.1 PR1,字段布局的定位、浮动及尺寸的平衡与微妙的时机依赖相当的复杂。在Beta 1,字段布局已经进行了广泛的修改。为了支持IE6,使用了表格。这一直存在一些计算要求,典型如高度,通过这种方法消除了以前在每个字段中进行的大量计算和测量,这迅速提高了速度。
面板折叠
在4.1 PR1,面板折叠是完全统一的。而在4.0,面板折叠是根据不同情况进行处理的。如在Accordion或者Border布局,这些布局会让折叠处理异常复杂。这些更改对大多数应用程序造成的影响不大,不过对于动画或自定义的折叠属性,则很重要。
遮蔽
遮蔽现在只用于共享的模态窗口。非浮动或非模态组件现在需要创建它们自己的遮蔽。在元素中使用Ext.LoadMask已过时,建议使用Ext.dom.Element的mask和unmask方法,该方法一直可以使用。
遮蔽管理在组件调整大小和隐藏时已得到改进。
拖放
在4.1 Beta 1,DragDropManager现在会查询z-index去识别最顶层的拖动目标。而这可解决有多个拖动目标重叠的问题,不过这会影响到自定义拖放的处理。
海王星
在博客中有许多关于海王星主题预览的问题。在这里澄清一下,海王星在ExtJS 4.1只支持现代浏览器(非IE)。如果需要支持IE,海王星将不是一个合适的选择。
小结
我们希望倾听到你在使用beta版时的任何问题。在这一点上,我们确实需要听到与兼容性有关的问题。我们的目标是尽可能为4.0提供向后兼容。
请记住,当发布一个问题或者错误时,一个测试用力总是有助于加快这一过程。请参阅http://www.sencha.com/forum/showthread.php?138165-How-to-report-a-bug