收藏 分销(赏)

EXT核心API详解(8-10).doc

上传人:仙人****88 文档编号:12006733 上传时间:2025-08-26 格式:DOC 页数:9 大小:55.50KB 下载积分:10 金币
下载 相关 举报
EXT核心API详解(8-10).doc_第1页
第1页 / 共9页
EXT核心API详解(8-10).doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
EXT核心API详解 EXT核心API详解Ext.data(八)- Connection/Ajax/Record javascript 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 EXT核心API详解Ext.data(九)-DataProxy/HttpProxy/MemoryProxy/ 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 ) 构造 load( Object params, Ext.data.DataReader reader, Function callback, Object scope, Object arg ) : void 取数据,和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 放弃 load( Object params, Ext.data.DataReader reader, Function callback, Object scope, Object arg ) : void EXT核心API详解Ext.data(十)-DataReader/ArrayReader/JsonReader Ext.data.DataReader 纯虚类,从数据源得到结构化数据转换为元数据对象,对象包含Record的集合,一般用做Store对象的元数据, 具有如下格式 { totalRecord:int, records:Array of Ext.data.Record } 具体使用参见三个子类 Ext.data.ArrayReader/Ext.data.JsonReader/Ext.data.XmlReader 方法 DataReader( Object meta, Object recordType ) 构造 Ext.data.ArrayReader 用于读数组到一个元数据对象 ArrayReader( Object meta, Object recordType ) 构造,第一个参数是配置除了可以指示使用哪个字段做id外,不懂其它的用法, 第二个参数是recordType与record对象的create方法的参数一样,是一样config对象数组,具体参见 readRecords( Object o ) : Object 读取o,返回一个元数据对象 用例示范: //定义数组 var arr=[ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]; var reader = new Ext.data.ArrayReader( //以第一个元素做为recordid    {id: 0}, //定义数组到record的映射关系    [     {name: 'name', mapping: 1},             {name: 'occupation', mapping: 2}       ] ); //生成元数据 var data=reader.readRecords(arr); Ext.data.JsonReader 用于将一个json对象转换为元数据对象 JsonReader( Object meta, Object recordType ) JsonReader的构造参数meta可以有更多选择, { id : String, root : String, successProperty : String, totalProperty : String } 都是对应json对象的属性名 read( Object response ) : Object 从一个response对象返回,response.responseText属性应仅含有一个json格式数据块 readRecords( Object o ) : Object 读取o,返回一个元数据对象 使用示例:      var json={ 'results': 2, 'rows': [     { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },     { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ] };     var reader=new Ext.data.JsonReader(         {         totalProperty: "results",//totalRecords属性由json.results得到         root: "rows",            //构造元数据的数组由json.rows得到         id: "id"                //id由json.id得到         },[         {name: 'name', mapping: 'name'},         {name: 'occupation'}            //如果name与mapping同名,可以省略mapping         ]     )     var data=reader.readRecords(json); Ext.data.XmlReader xmlreader对象当然是为xml而准备的 构造: XmlReader( Object meta, Mixed recordType ) meta与jsonreader类似, meta是一个{     id : String,     record : String,     success : String,     totalRecords : String }对象,只是这些字符串都是相对于文档根目录的domquery路径 read( Object response ) : Object readRecords( Object doc ) : Object .... var str=["<?xml version=\"1.0\" encoding=\"utf-8\" ?>",     "<dataset>", "<results>2</results>", "<row>",    "<id>1</id>",    "<name>Bill</name>",    "<occupation>Gardener</occupation>", "</row>", "<row>",    "<id>2</id>",    "<name>Ben</name>",    "<occupation>Horticulturalist</occupation>", "</row>", "</dataset>"].join(""); //生成xmldocument对象 var xmlDocument; if(Ext.isIE){     xmlDocument = new ActiveXObject("Msxml2.FreeThreadedDOMDocument")     xmlDocument.async=false;     xmlDocument.resolveExternals = false;     xmlDocument.loadXML(str) } else{    xmlDocument = (new DOMParser()).parseFromString(str, "text/xml"); } //然后开始...和其它两个reader一样的用法,只是这儿换了一种写法,recordtype也可以是一个record对象 var record = Ext.data.Record.create([    {name: 'name', mapping: 'name'},     // "mapping" property not needed if it's the same as "name"    {name: 'occupation'}                 // This field will use "occupation" as the mapping. ]) var reader = new Ext.data.XmlReader({    totalRecords: "results",    record: "row",           //row是节点选择器    id: "id"                 }, record); var data=reader.readRecords(xmlDocument);
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服