Ext.data
DataProxy :获取数据,通过他能得到来自不同地方的数据,如数组、远程服务器,并组织成不同的格式
DataReader:定义数据逻辑结构,一个数据项有很多列,每列的名称是什么,分别是什么数据类型,都该由类定义。另外还负责对不同格式的数据进行读取和解析
Store:存储器,用于整合proxy和Reader ,控件索取数据时通常和他打交道
Ext.data.DataProxy类
proxy:代理
实际应用中 都是用Ext.data.DataProxy的子类:MemoryProxy、HttpProxy、和ScriptTagProxy
MemoryProxy:获取内存数据,可以是数组、json、或xml
HttpProxy:使用Http协议通过Ajax从远程服务器获取数据代理,需指定url。
ScriptTagProxy:功能和HttpProxy一样 但是支持跨域获取数据
Ext.data.DataReader类
DataReader 依赖DataProxy 定义数据项(行)的逻辑结构: 列名(name)/类型(type)/列与数据源的索引映射(mapping)等
实际 每个数据项 都是一个 Ext.data.Record 对象 数据项的列信息是通过Ext.data.Record来定义的。 Ext.data.Record 没有固定的结构, 他保存的是一个json对象数组,
数据元素个数 由列的数量来决定。
var City =Ext.data.Record.create([
{name:"cid",type:"int",maping:"0"},
{name:"cname",type:"string",maping:"1"}
]);
.Record 创建好后,必须和DataReader关联,DataReader 也有三个子类: Ext.data.ArrayReader/Ext.data.JsonReader/Ext.data.XmlReader
var reader =new Ext.data.ArraayReader({},Record)
Ext.data.Store
此类 用来整合DataProxy和DataReader
var store = new Ext.data.Store({
proxy:proxy,
reader:reader
});
默认 Store 会延时加载 必须要调用load()方法 也可以配置 autoLoad:true
Store 的主要任务就是在内存建立一张表 并填充到组件中 例如Combobox 和GridPanel