Ext.data在命名空間中定義了一系列store、reader和proxy。Grid和ComboxBox都是以Ext.data為媒介獲取數據的,它包含異步加載、類型轉換、分頁等功能。EXT默認支持Array、JSON、XML等數據格式,可以通過Memory、HTTP、 ScriptTag等方式獲得這些格式的數據。如果要實現新的協議和新的數據結構,只需要擴展reader和proxy即可。本章主要介紹EXT中的數據存儲與傳輸。

一、Ext.data.Connection

Ext.data.Connection主要用于在Ext.data.HttpProxy和Ext.data.ScriptTagProxy中執行與后臺交互的任務,它會從指定的URL獲得數據,并把后臺返回的數據交給HttpProxy或ScriptTagProxy處理,Ext.data.Connection的使用方式如下面所示:

(1) 首先創建一個新的Ext.data.Connection實例。

  1. var conn=new Ext.data.Connection({  
  2.                 autoAbort:false,  
  3.                 defaultHeaders:{  
  4.                     referer:'http://www.sina.com.cn'  
  5.                 },  
  6.                 disableCaching:false,  
  7.                 extraParams:{  
  8.                     name:'name'  
  9.                 },  
  10.                 method:'GET',  
  11.                 timeout:300,  
  12.                 url:'01-01.txt'  
  13.             });  

 

(2) 在創建conn之后,可以調用request()函數發送請求,處理返回的結果。

  1. conn.request({  
  2.                 success:function(response){  
  3.                     Ext.Msg.alert('info',response.responseText);  
  4.                 },  
  5.                 failure:function(){  
  6.                     Ext.Msg.alert('warn','failure');  
  7.                 }  
  8.             });  
  

 

(3) Ext.data.Connection還提供了abort([Number transactionId])函數,當同時有多個請求發生時,根據指定的事務id放棄其中的某一個請求,如果不指定id,則會放棄最后一個請求。

二、Ext.data.Record

Ext.data.Record就是一個設定了內部數據類型的對象,它是Ext.data.Store的最基本組成部分。 Ext.data.Record的主要功能是保存數據,并且在內部數據發生改變時記錄修改的狀態,它還可以保留修改之前的原始值。

(1) 我們使用Ext.data.Record時,通常都是由create()函數開始,首先用create()函數創建一個自定義的Recore類型,如下所示:

  1. var PersonRecord=Ext.data.Record.create([  
  2.                 {name:'name',type:'string'},  
  3.                 {name:'sex',type:'int'}  
  4.             ]);  

 

(2) PersonRecord就是我們定義的新類型,然后我們使用new關鍵字創建PersonRecord的實例:

  1. var boy=new PersonRecord({  
  2.                 name:'boy',  
  3.                 sex:0  
  4.             });  

 

(3) 現在,我們得到了PersonRecord的實例boy,如何得到它的屬性值?以下有三種方法:

  1. alert(boy.data.name);  
  2. alert(boy.data['name']);  
  3. alert(boy.get['name']);  

 

三、Ext.data.Store

Ext.data.Store是EXT中用來進行數據交換和數據交互的標準中間件,無論是Grid還是ComBox,都是通過它實現數據讀取、類型轉換、排序分列和搜索等操作。Ext.data.Store中有一個Ext.data.Record數組,所有數據都存放在這些 Ext.data.Record實例中,為后面的讀取和修改操作做準備。

(1) 在使用之前,首先要創建一個Ext.data.Store的實例,如下面代碼:

  1. var data=[  
  2.                 ['boy',0],  
  3.                 ['girl',1]  
  4.             ];  
  5.             var store=new Ext.data.Store({  
  6.                 proxy:new Ext.data.MemoryProxy(data),  
  7.                 reader:new Ext.data.ArrayReader({},PersonRecord)  
  8.             });  
  9.             store.load();  

 

(2) 每個store最少需要兩個組件的支持,分別是proxy和reader,proxy是用于從某個途徑讀取原始數據,reader用于將原始數據轉換成 Record實例。

四、小結

本章主要詳細介紹了Ext.data.Record和Ext.data.Store的功能和基本使用方法,這兩個類結合起來形成了Ext.data 中的主體數據模型,很多組件都是建立在它們之上的,至于其他的常用的proxy,reader,store:SimpleStore和JsonStore 則在后面學習中給出詳細介紹。