EXT核心API详解(十)_Ext.data.MemoryProxy/ScriptTagProxy/Array-Json-Xml-Reader

[size=small][color=red][b]Ext.data.MemoryProxy[/b][/color]
[b]MemoryProxy( Object data )[/b]
构造
[b]load( Object params, Ext.data.DataReader reader, Function callback, Object scope, Object arg ) : void[/b]
取数据,和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);


[color=red][b]Ext.data.ScriptTagProxy[/b][/color]
这个类和HttpProxy类似,也是用于请求远程数据,但能用于跨主域调用,如果请求时使用了callback参数
则服务端应指定Content-Type属性为"text/javascript"
并返回callback(jsonobject)
反之则应置Content-Type属性为"application/x-json"
并直接返回json对象
[b]ScriptTagProxy( Object config )[/b]
构造,其中
config定义为{
callbackParam : String, //回叫参数
nocache : Boolean, //是否缓存
timeout : Number, //超时
url : String //请求数据的url
}
[b]abort() : void[/b]
放弃
[b]load( Object params, Ext.data.DataReader reader, Function callback, Object scope, Object arg ) : void[/b]

[color=red][b]Ext.data.DataReader[/b][/color]
纯虚类,从数据源得到结构化数据转换为元数据对象,对象包含Record的集合,一般用做Store对象的元数据,
具有如下格式
{
totalRecord:int,
records:Array of Ext.data.Record
}
具体使用参见三个子类
Ext.data.ArrayReader/Ext.data.JsonReader/Ext.data.XmlReader
[color=red]方法[/color]
DataReader( Object meta, Object recordType )
构造

[color=red][b]Ext.data.ArrayReader[/b][/color]
用于读数组到一个元数据对象
[b]ArrayReader( Object meta, Object recordType )[/b]
构造,第一个参数是配置除了可以指示使用哪个字段做id外,不懂其它的用法,
第二个参数是recordType与record对象的create方法的参数一样,是一样config对象数组,具体参见
[b]readRecords( Object o ) : Object[/b]
读取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);

[color=red][b]Ext.data.JsonReader[/b][/color]
用于将一个json对象转换为元数据对象
[b]JsonReader( Object meta, Object recordType )[/b]
JsonReader的构造参数meta可以有更多选择,
{
id : String,
root : String,
successProperty : String,
totalProperty : String
}
都是对应json对象的属性名
[b]read( Object response ) : Object[/b]
从一个response对象返回,response.responseText属性应仅含有一个json格式数据块
[b]readRecords( Object o ) : Object[/b]
读取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);

[color=red][b]Ext.data.XmlReader[/b][/color]
xmlreader对象当然是为xml而准备的
[color=red]构造:[/color]
[b]XmlReader( Object meta, Mixed recordType )[/b]
meta与jsonreader类似,
meta是一个{
id : String,
record : String,
success : String,
totalRecords : String
}对象,只是这些字符串都是相对于文档根目录的domquery路径
[b]read( Object response ) : Object
readRecords( Object doc ) : Object[/b]
....
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);[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、Ext类 ………………………………… 2 2、Array类 …………………………… 4 3、Number类 …………………………… 4 4、String类 …………………………… 4 5、Date类 ……………………………… 5 6、Function类 ………………………… 6 7、Ext.Element类 ………………………… 7 8、Ext.DomQuery类 ………………… 13 9、Ext.DomHelper类 …………………… 14 10、Ext.Template类 …………………… 14 11、Ext.EventManager类 ……………… 15 12、Ext.EventObject类 ………………… 15 13、Ext.CompositeElement类 ………… 16 14、Ext.CompositeElementLite类 ……… 16 15、Ext.Fx类 …………………………… 16 16、Ext.KeyNav类 ……………………… 19 17、Ext.KeyMap类 …………………… 19 18、Ext.util.JSON类 ……………………… 20 19、Ext.util.Format类 ………………… 20 20、Ext.util.DelayedTask类 ……………… 20 21、Ext.util.TaskRunner类 …………… 21 22、Ext.util.TextMetrics类 …………… 21 23、Ext.XTemplate类 ………………… 21 24、Ext.data.Connection类 ……………… 22 25、Ext.Ajax类 ………………………… 22 26、Ext.data.Record类 ………………… 23 27、Ext.data.DataProxy类 …………… 24 28、Ext.data.HttpProxy类 …………… 24 29、Ext.data.MemoryProxy类 ……… 25 30、Ext.data.ScriptTagProxy类 ………… 25 31、Ext.data.DataReader类 ……………26 32、Ext.data.ArrayReader类 …………… 26 33、Ext.data.JsonReader类 …………… 26 34、Ext.data.XmlReader类 …………… 27 35、Ext.data.Store类 …………………… 28 36、Ext.data.GroupingStore类 ………… 32 37、Ext.data.SimpleStore类 ………… 34 38、Ext.data.Tree类 …………………… 34 39、Ext.data.Node类 ………………… 34 40、Ext.Action类 ……………………… 35 41、Ext.Button类 …………………… 36 42、Ext.SplitButton类 ……………… 38 43、Ext.CycleButton类 ……………… 39 44、Ext.form.BasicForm类 …………… 40 45、Ext.form.Field类 …………………… 41 46、Ext.form.Checkbox类 …………… 42 47、Ext.form.Radio类 ………………… 43 48、Ext.form.HtmlEditor类 …………… 43 49、Ext.form.TextField类 …………… 44 50、Ext.form.NumberField类 ………… 44 51、Ext.form.TextArea类 …………… 45 52、Ext.form.TriggerField类 ……… 45 53、Ext.form.DateField类 ………… 45 54、Ext.form.ComboBox类 ……………… 46 55、Ext.form.TimeField类 ………… 47 56、Ext.menu.Menu类 ………………… 50 57、Ext.menu.BaseItem类 …………… 50 58、Ext.menu.Adapter类 ……………… 51 59、Ext.menu.Item类 ………………… 51 60、Ext.menu.CheckItem类 …………… 51 61、Ext.menu.Separator类 ………… 52 62、Ext.menu.TextItem类 …………… 52 63、Ext.Toolbar类 …………………… 55 64、Ext.Toolbar.Item类 ……………… 56 65、Ext.Toolbar.Separator类 ……… 56 66、Ext.Toolbar.Spacer类 …………… 56 67、Ext.Toolbar.TextItem类 ……… 56 68、Ext.Toolbar.Fill类 ……………… 56 69、Ext.grid.ColumnModel类 ……… 58 70、Ext.grid.PropertyColumnModel类 … 59 71、Ext.grid.GridView类 …………… 59 72、Ext.grid.GroupingView类 ………… 60 73、Ext.grid.EditorGridPanel类 ……… 62 74、Ext.grid.PropertyGrid类 …………… 65

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值