最近在用Ext做界面设计的时候发现经常出现正常的页面在使用几次之后布局就乱七八糟的问题
查了下代码,发现是Ext的stateful作怪
在Component.js中有这么一句:
if(this.stateful !== false){
this.initState(config);
}
如果你调用Ext.state.Manager.setProvider启用了状态保持功能,很多component就会保持状态
saveState : function(){
if(Ext.state.Manager){
var state = this.getState();
if(this.fireEvent('beforestatesave', this, state) !== false){
Ext.state.Manager.set(this.stateId || this.id, state);
this.fireEvent('statesave', this, state);
}
}
可以看到保持的状态默认是用this.stateId || this.id做key,但是大部分component我们不会给他指定id,这时候ext就会默认给他生成一个id
getId : function(){
return this.id || (this.id = "ext-comp-" + (++Ext.Component.AUTO_ID));
}
可以看出这个id是从ext-comp-1000开始的字符串
很有可能一个界面在刷新后,两个不同component具有同一个id,这时候stateful就会搞错对象,举个例子
Ext.Window中保持的状态是:
getState : function(){
return Ext.apply(Ext.Window.superclass.getState.call(this) || {}, this.getBox());
},
getBox : function(local){
var s = this.el.getSize();
if(local === true){
s.x = this.el.getLeft(true);
s.y = this.el.getTop(true);
}else{
var xy = this.xy || this.el.getXY();
s.x = xy[0];
s.y = xy[1];
}
return s;
},
可以看到保存了Ext.Window的坐标以及大小,如果这些信息被加载到了其他component上面去了,不乱掉才怪
解决这个问题的办法是,默认禁掉stateful
1.不调用Ext.state.Manager.setProvider 不会启用保持
2.
if(this.stateful !== false){
this.initState(config);
}
改成
if(this.stateful){
this.initState(config);
}
默认就不保持状态,我就是这么干的
分享到:
相关推荐
Ext界面设计器 ExtDesigner. ext界面自动生成器 内附安装说明,破解文件
Ext 界面设计器是一款强大的前端开发工具,专用于构建基于Ext JS库的用户界面。它提供了可视化的拖放设计功能,使得开发者无需深入编写复杂的JavaScript代码就能创建出丰富的交互式Web应用界面。这款设计器经过了预...
EXT Designer是一款专为EXT UI框架设计的可视化设计工具,它极大地简化了EXT用户界面的创建过程,让开发者和设计师能够快速、高效地构建出复杂的Web应用程序界面。EXT UI是一种流行的JavaScript库,它提供了丰富的...
Ext界面生成器是一款强大的开发工具,专为使用Ext框架进行Web界面构建的开发者设计。它极大地简化了界面创建过程,通过自动化的方式自动生成界面代码,从而节省开发者的时间和精力,提高工作效率。对于初学者和经验...
9. **响应式设计**:现代应用通常需要适应不同设备的屏幕大小,EXTJS4提供了响应式布局,确保登录界面在手机、平板电脑和桌面电脑上都能正常工作。 10. **样式和主题**:EXTJS4提供了多种预定义的主题,开发者可以...
Ext界面生成器Ext界面生成器Ext界面生成器Ext界面生成器
EXT界面生成器的核心功能在于其可视化设计界面,允许开发者通过拖放的方式布局和配置界面元素。这个工具极大地简化了EXT JS应用的开发过程,因为它消除了手动编写大量代码的需要。对于那些不熟悉EXT JS API或者希望...
Ext Designer ExtJs图形界面设计工具
这里面有ext 制作界面的一些心得,要用ext开发后台框架的可以运用下哦
ext2.2包括登陆页面和主框架页面。 简洁,漂亮
Ext界面生成器 Ext界面生成器 Ext界面生成器
"是对我之前发布的《ext4.1简单的登陆界面》的升级和简化",这表明开发者可能已经有一个使用ExtJS 4.1实现的基础版本,现在通过4.2版本进行优化,可能涉及改进界面设计、增强用户体验或者修复已知问题。"调整login....
标签“ext UI”强调了这是关于EXT用户界面的设计,UI设计是软件开发的重要部分,它决定了应用的外观和交互性。而“extbuilder”标签则直接指出了这个压缩包与EXTBuilder工具有关。 在压缩包子文件的文件名称列表中...
这部分可能还涵盖了一些最佳实践和调试技巧,以帮助开发者解决在项目中遇到的问题。 附带的文档如“目录.doc”提供了全书的详细结构,帮助读者快速定位所需信息;“前言.doc”通常包含了作者的写作背景和目的,以及...
非常简洁漂亮的EXT.NET登录界面布局
在描述中提到的“对javascript强封装大”,意味着Ext JS 将JavaScript的功能进行了高度抽象和模块化,封装了许多复杂的底层操作,使得开发者无需关心底层细节,只需关注业务逻辑和界面设计。这大大降低了开发难度,...
第一步:Ext需要支持AIR的支持。下载并安装 http://airdownload.adobe.com/air/win/download/latest/AdobeAIRInstaller.exe(已在文件中包含只需安装) 第二步: 安装Ext的核心安装包xds_preview.air; 第三步汉化: ...
Ext登陆界面源代码,仅供参考。此乃小弟辛辛苦苦学习后整理出来的,有从网上参考别人的代码,有自己整理的。