打造Ext2.0模块化单页系统(一)
http://microboat.iteye.com/blog/182682
上回说到模块基类的定义和主程序类定义,接下来我们看看具体某个模块的定义。
这里为了演示目的,借用API上的Array Grid Example
先看代码:
Ext.extend(demo.module, {
init: function(){
var myData = [
['3m Co',71.72,0.02,0.03,'9/1 12:00am'],
['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'],
['Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am'],
['American Express Company',52.55,0.01,0.02,'9/1 12:00am'],
['American International Group, Inc.',64.13,0.31,0.49,'9/1 12:00am'],
['AT&T Inc.',31.61,-0.48,-1.54,'9/1 12:00am'],
['Boeing Co.',75.43,0.53,0.71,'9/1 12:00am'],
['Caterpillar Inc.',67.27,0.92,1.39,'9/1 12:00am'],
['Citigroup, Inc.',49.37,0.02,0.04,'9/1 12:00am'],
['E.I. du Pont de Nemours and Company',40.48,0.51,1.28,'9/1 12:00am'],
['Exxon Mobil Corp',68.1,-0.43,-0.64,'9/1 12:00am'],
['General Electric Company',34.14,-0.08,-0.23,'9/1 12:00am'],
['General Motors Corporation',30.27,1.09,3.74,'9/1 12:00am'],
['Hewlett-Packard Co.',36.53,-0.03,-0.08,'9/1 12:00am'],
['Honeywell Intl Inc',38.77,0.05,0.13,'9/1 12:00am'],
['Intel Corporation',19.88,0.31,1.58,'9/1 12:00am'],
['International Business Machines',81.41,0.44,0.54,'9/1 12:00am'],
['Johnson & Johnson',64.72,0.06,0.09,'9/1 12:00am'],
['JP Morgan & Chase & Co',45.73,0.07,0.15,'9/1 12:00am'],
['McDonald\'s Corporation',36.76,0.86,2.40,'9/1 12:00am'],
['Merck & Co., Inc.',40.96,0.41,1.01,'9/1 12:00am'],
['Microsoft Corporation',25.84,0.14,0.54,'9/1 12:00am'],
['Pfizer Inc',27.96,0.4,1.45,'9/1 12:00am'],
['The Coca-Cola Company',45.07,0.26,0.58,'9/1 12:00am'],
['The Home Depot, Inc.',34.64,0.35,1.02,'9/1 12:00am'],
['The Procter & Gamble Company',61.91,0.01,0.02,'9/1 12:00am'],
['United Technologies Corporation',63.26,0.55,0.88,'9/1 12:00am'],
['Verizon Communications',35.57,0.39,1.11,'9/1 12:00am'],
['Wal-Mart Stores, Inc.',45.45,0.73,1.63,'9/1 12:00am']
];
var store = new Ext.data.SimpleStore({
fields: [
{name: 'company'},
{name: 'price', type: 'float'},
{name: 'change', type: 'float'},
{name: 'pctChange', type: 'float'},
{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
]
});
store.loadData(myData);
var grid = new Ext.grid.GridPanel({
store: store,
columns: [
{id:'company',header: "Company", width: 160, sortable: true, dataIndex: 'company'},
{header: "Price", width: 75, sortable: true, renderer: 'usMoney', dataIndex: 'price'},
{header: "Change", width: 75, sortable: true, renderer: this.change, dataIndex: 'change'},
{header: "% Change", width: 75, sortable: true, renderer: this.pctChange, dataIndex: 'pctChange'},
{header: "Last Updated", width: 85, sortable: true, renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}
],
stripeRows: true,
autoExpandColumn: 'company',
height:350,
width:600,
title:'Array Grid'
});
this.main.add(grid);
this.main.doLayout();
},
change: function(val){
if(val > 0){
return '<span style="color:green;">' + val + '</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '</span>';
}
return val;
},
pctChange: function(val){
if(val > 0){
return '<span style="color:green;">' + val + '%</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '%</span>';
}
return val;
}
});
这个模块是在面板中显示一个数据列表,前面我们说过,模块的界面渲染部分放在统一的init方法中。
首先定义数据源,然后定义grid,其中2列的渲染调用这个模块的2个方法。
this.main.add(grid);
把grid加入这个模块的主面板,还记得this.main是什么吗?
完成后还需要把this.main重新渲染一下,让它根据新加入的内容重新计算宽度和高度。
this.main.doLayout();
好了,把这段js命名为module1.js并放在程序的modules目录下,当主程序的TabPanel中的第一个Tab被激活时就会自动加载这段js并执行,最终在Tab中显示一个数据表格。
这2篇文章只是提供一种模块化单页系统的思路,其实现较为简洁,例子也比较简单,在实际开发中可能会有更复杂的需求,比如说把一个大模块再划分为更细的模块来动态加载,几个模块之间的数据互访和方法互调,但只要本着这种思路,我们就可以把一个复杂的需求细化成多个小模块来实现。
分享到:
相关推荐
6. **可扩展性**:EXT2.0的API设计得更为完善,更容易进行二次开发和扩展,允许开发者根据需求自定义组件和功能。 7. **性能优化**:针对1.0版本的性能问题,EXT2.0进行了大量优化,包括更快的渲染速度、更少的DOM...
ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0
ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记...
1. **日志结构**:EXT2.0虽然没有引入日志式文件系统,但它是非日志式的,这意味着在系统崩溃或不正常关机后,可能需要进行检查和修复。这与后来的EXT3和EXT4文件系统形成了对比,后者支持日志记录,提高了系统的...
6. **Ajax集成**:EXT 2.0内置了Ajax通信模块,可以方便地与服务器进行异步数据交换,支持JSON、XML等多种数据格式。 7. **主题皮肤**:EXT 2.0提供了多种预设的主题,可以通过简单的配置改变整个应用的视觉风格,...
本文档主要针对EXT2.0版本进行介绍。 EXT2.0在EXT1.x的基础上进行了大量的改进和优化,增加了更多的UI组件,提升了性能,并且强化了对Ajax和数据绑定的支持。Ajax技术允许Web应用在不刷新整个页面的情况下与服务器...
Ext 2.0的核心特性包括组件化、数据绑定、布局管理、丰富的用户界面组件以及强大的数据网格等。以下是对这些知识点的详细阐述: 1. **组件化**:Ext 2.0基于组件的设计思想,允许开发者通过组合各种小部件来构建...
3. **EXT2.0中文教程.exe**: 这可能是一个以可执行文件(.exe)形式的中文教学程序,对于中文用户来说非常友好。它可能包含了视频教程、交互式示例或者图文并茂的讲解,帮助学习者更直观地理解Ext 2.0的用法和功能。...
在EXT2.0中,本地浏览API的插件主要解决的是Web应用与本地文件系统交互的问题。由于浏览器的安全限制,JavaScript通常无法直接访问用户的本地文件系统。然而,这个插件通过模拟XMLHttpRequest(XHR)对象,实现了在...
EXT2.0是一种广泛应用于Linux操作系统中的文件系统,它的全称是Extended File System Version 2.0。在Linux世界中,文件系统是管理和组织磁盘数据的核心组件,它决定了文件如何存储、检索以及如何实现高效的读写操作...
在日常使用中,了解EXT2.0 API的这些核心特性对于系统管理员和开发者来说至关重要,它可以帮助他们更好地理解和优化Linux系统,确保数据的安全性和系统性能。同时,掌握EXT2.0 API也是向更高层次的文件系统学习,如...
EXT2.0是EXT库的一个早期版本,它提供了丰富的用户界面组件,包括GRID,用于展示大量结构化数据。 EXT2.0 GRID组件是EXT库中的核心部分,它允许开发者以表格形式显示数据,并提供了一系列功能,如排序、分页、筛选...
Ext2.0是Ext JS库的一个早期版本,它是一个用于构建富互联网应用程序(RIA)的JavaScript框架。这个框架提供了一套完整的UI组件和强大的数据管理功能,使得开发者能够创建交互性强、功能丰富的Web应用。全组件和帮助...
EXT2.0中文教程是一个专为Windows用户设计的教育资源,旨在帮助用户理解和操作EXT2.0文件系统。EXT2.0是Linux操作系统中早期广泛使用的日志式文件系统,它在1993年由Rene Rebe开发,作为EXT1的升级版。EXT2.0在性能...
1. **组件系统**:Ext 2.0提供了一套完善的组件模型,包括窗口(Windows)、面板(Panels)、表格(Grids)、表单(Forms)、菜单(Menus)等。这些组件可以自由组合,构建复杂的用户界面,且具备高度可定制化和可...
9. **Ext Designer支持**:EXT 2.0可能还支持EXT Designer,一个可视化的布局编辑工具,使得非程序员也能创建EXT界面。 10. **主题和皮肤**:EXT提供了多种预设的主题,可以改变整个应用程序的外观和感觉。 11. **...
总结,EXT2.0中文文档详细阐述了这一经典文件系统的内在机制和管理方法,为Linux用户提供了深入理解文件系统运作的基础,对学习Linux系统管理和优化具有重要意义。通过阅读这份文档,读者不仅可以掌握EXT2.0的核心...
通过这个教程,学习者可以掌握如何在Linux系统中创建、挂载、格式化EXT2.0文件系统,以及如何进行基本的文件系统维护,如使用`df`和`du`命令检查磁盘空间,使用`fsck`工具检查和修复文件系统错误,理解inode的概念和...
EXT是一种基于Web的JavaScript框架,以其高性能、可扩展性和丰富的用户界面组件而闻名,EXT 2.0 酒店管理系统充分利用了这些优势,打造了一个直观易用且功能强大的系统。 首先,我们来了解一下EXT的核心特性。EXT...