天天看點

Ext.data-DataProxy/HttpProxy/MemoryProxy/ScriptTagProxy

Ext.data.DataProxy

資料代理類是一個純虛類,主要用于生成Ext.data.Record對象,沒有公開的屬性和方法,隻是歸定子類需要處理三個事件

beforeload : ( Object This, Object params )

load : ( Object This, Object o, Object arg )

loadexception : ( Object This, Object o, Object arg, Object e )

事實上參數也是子類自定義的

Ext.data.HttpProxy

api文檔中說httpProxy是從object繼承來的,事實上source中它和下面的Ext.data.MemoryProxy/Ext.data.ScriptTagProxy都繼承于DataProxy

HttpProxy用于遠端代理,而且服務端傳回資訊時必須指定Content-Type屬性為"text/xml".

HttpProxy( Object conn )

構造一個HttpProxy對象,參數可以是一個類似于{url: 'foo.php'}這樣的json對象,也可以是一個Ext.data.Connection對象,如果參數沒有指定,将使用Ext.Ajax對象将被用于發起請求

getConnection() : Connection

得到目前連接配接對象

load( Object params, Ext.data.DataReader reader, Function callback, Object scope, Object arg ) : void

從配置的connection對象得到record資料塊,并激發callback

params:        發起http請求時所要傳遞到服務端的參數

DataReader:    見DataReader

callback:    回叫方法,第一個參數為接收到的資訊,第二個參數為arg,第三個是成功标志

scope:        範圍

arg:        這兒的參數将會傳遞給回叫函數callback

使用示例:

var proxy=new Ext.data.HttpProxy({url:'datasource.xml'});

    //關于reader将會在Ext.data.DataReader中講解

    var reader = new Ext.data.XmlReader({

       totalRecords: "results",

       record: "row",        

       id: "id"                

    }, [

       {name: 'name', mapping: 'name'},

       {name: 'occupation'}           

    ]);

    //定義回叫方法

    var metadata;

    function callback(data,arg,success){

        if(success){

            metadata=data;

        }

    }

    //從connection配置的url中利用reader将傳回的xml檔案轉為中繼資料,并傳遞給callback

    proxy.load( null,reader,callback,this);

Ext.data.MemoryProxy

MemoryProxy( Object data )

構造

取資料,和HttpProxy類似,隻是params參數沒有被使用

使用示例

var proxy=new Ext.data.MemoryProxy([ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]);

var reader = new Ext.data.ArrayReader(

{id: 0},

[

{name: 'name', mapping: 1},        

{name: 'occupation', mapping: 2}   

]);

var metadata;

function callback(data,arg,success){

    metadata=data;

}

proxy.load( null,reader,callback,this);

Ext.data.ScriptTagProxy

這個類和HttpProxy類似,也是用于請求遠端資料,但能用于跨主域調用,如果請求時使用了callback參數

則服務端應指定Content-Type屬性為"text/javascript"

并傳回callback(jsonobject)

反之則應置Content-Type屬性為"application/x-json"

并直接傳回json對象

ScriptTagProxy( Object config )

構造,其中

config定義為{

callbackParam : String,    //回叫參數

nocache : Boolean,    //是否緩存

timeout : Number,    //逾時

url : String        //請求資料的url

abort() : void

放棄

參見HttpProxy

繼續閱讀