2008年12月29日

Ext.data- Connection/Ajax/Record

Ext.data.Connection

訪問指定的url,這是個異步調用類,如果想得到服務器信息,請在request參數中指定callback方法或指定偵聽者(對文件上傳無效)

Connection( Object config )
構造,config定義為{
autoAbort : Boolean,
defaultHeaders : Object,
disableCaching : Boolean,
extraParams : Object,
method : String,
timeout : Number,
url : String
}
對象

方法:由 Observable繼承過來的方法省略
abort( [Number transactionId] ) : void
放棄請求,如果同時有多個請求發生,參數指示請求進程序號,不指定則是放棄最後一個請求

isLoading( [Number transactionId] ) : Boolean
第transactionId個請求是否完成載入,未批定指最後一個

request( [Object options] ) : Number
最實用的當然是這個方法了,返回的正是前面的兩個方法所需要的進程id
其中options定義為{
url:string, //請求url
params:Object/String/Function, //以post方法請求時傳遞的參數
method:string , //Get/Post
callback:Function, //回叫方法,不管是成功還是失敗都會呼叫這個方法,有三個參數,由options傳入的options參數,success:Boolean,成功? response:Object, 含有返回數據的XMLHttpRequest對象
success:Function, //成功時回叫,第一個參數為XMLHttpRequest對象,第二個參數傳入指定的options
failure:Function, //失敗時回叫,參數同success
scope:Object, //範圍
form:Object/String, //一個form對象或它的id,可以由此自動生成參數params
isUpload:Boolean, //文件上傳?通常可以自動檢測
headers:Object, //要自定義的請求頭信息
xmlData:Object //一個xml文檔對象,它將通過url附加參數的方式發起請求
disableCaching:Boolean //是否禁用緩存?默認為真
}

Ext.Ajax
由Ext.data.Connection 繼承而來,方法和父類一模一樣,但使用起來更簡單一些,是一個全局惟一靜態類
示例:
Ext.Ajax.request({
url: 'foo.php',
success: someFn,
failure: otherFn,
headers: {
'my-header': 'foo'
},
params: { foo: 'bar' }
});


Ext.Ajax.request({
form: 'some-form',
params: 'foo=bar'
});

//所有的Ext.Ajax請求都會加個這個默認的頭
Ext.Ajax.defaultHeaders = {
'Powered-By': 'Ext'
};

//所有的Ext,Ajax在發起請求前都會調用showSpinner
Ext.Ajax.on('beforerequest', this.showSpinner, this);


Ext.data.Record
基本上可以理解為.net中的datarow或者sql server中的一行數據,它存放了數據的定義信息和他們的值
[公有屬性]
data : Object 數據內容,一個json對象
dirty : Boolean 是否修改過
id : Object 惟一ID,默認從1000開始以1剃增
modified : Object 如果記錄沒有修改過,為null如果修改過則存放原始值信息
[公有方法]
Record( Array data, [Object id] )
這個構造方法並不用於創建記錄對象,相反,應該使用create方法來創建record對象,參數data定義見create方法,id默認遞增起始id

beginEdit() : void
開始修改

cancelEdit() : void
放棄所做的修改,參見commit

copy( [String id] ) : Record
//創建當前record的一個克隆值,如果未指定id使用當前id+1

commit( [Boolean silent] ) : void
commit方法一般會被Store對象調用而不是recorde本身,提交自創建或最後一次修改後的所有變更,如果silent為真將不會通知store對象


create( [Array o] ) : function
靜態構造方法 o是config數組
其中config可以含有如下屬性
{
name : String //字段名
mapping : String //用於reader時的映射關係,如果是用於jsonreader,使用相對當前記錄的javascript表達式
//,如果是用於xmlreader,則是相對於記錄的domquery表達式,對於ArrayReader,則是序號
type:String //可選值 auto /string/int/float/boolean/date,其中auto是默認值,不進行轉換
sortType : Mixed //排序類型,Ext.data.SortTypes成員之一,參見sortTypes
sortDir : String //正序倒序 ASC/DESC值之一
convert : Function //轉換函數,這個功能很有用,可自定義,接收當前value返回處理後的value
dateFormat : String //日期格式化字符串,convert:function的一個特例,使用Date.parseDate方法轉換當前日期
}


endEdit() : void
結束修改

get( name {String} ) : Object
指定命名字段string的值

getChanges() : Object
返回修改記錄的對象

reject( [Boolean silent] ) : void
和commit相似,當然是拒絕所做的修改

set( String name, Object value ) : void
為字段name設定新值value