PropertiesMethodsEventsConfig OptionsDirect Link

Class Ext.data.JsonReader

Defined In: JsonReader.js
Class: Ext.data.JsonReader
Extends: Ext.data.DataReader
Data reader类接受一个JSON响应结果后,创建一个由Ext.data.Record对象组成的数组, 数组内的每个对象都是Ext.data.Record构造器负责映射(mappings)的结果。

示例代码:


var Employee = Ext.data.Record.create([
    {name: 'firstname'},                  // 映射了Record的"firstname" 字段为行对象的同名键名称
    {name: 'job', mapping: 'occupation'}  // 映射了"job"字段为行对象的"occupation"键
]);
var myReader = new Ext.data.JsonReader({
    totalProperty: "results",             // 该属性是指定记录集的总数(可选的)
    root: "rows",                         // 该属性是指定包含所有行对象的数组
    id: "id"                              // 该属性是指定每一个行对象中究竟哪一个是记录的ID字段(可选的)
}, Employee);

形成这种形式的JSON对象:


{
    results: 2,
    rows: [
        { id: 1, firstname: 'Bill', occupation: 'Gardener' },         // 行对象
        { id: 2, firstname: 'Ben' , occupation: 'Horticulturalist' }  // 另外一个行对象
    ]
}

随时都可以改变JsonReader的元数据,只要在数据对象中放置一个metaData的属性。 一旦将该属性对象检测出来,就会触发Reader所使用的{@link Ext.data.Store Store}对象身上的{@link Ext.data.Store#metachange metachange}事件。

属性metaData可包含任何为该类服务的配置选项。 还可以包含fields的属性,会给JsonReader用作Ext.data.Record#create的参数,以便配置所产生的Records布局。

配合使用metaData属性,和Store的{@link Ext.data.Store#metachange metachange}事件, 就可产生“基于Store”控制的自我初始化。 metachange的处理函数会解析metaData属性(包含了任意的用户制定属性)来执行所需的配置操作, 当然还有用于定义字段的metaData.fields数组。

要创建无须好像上一例那样配置的Record构造器的JsonReader对象,你可以采取这样的机制:


var myReader = new Ext.data.JsonReader();

可由数据库返回reader所需的配置信息,叫做metaData属性,只需要在第一次请求的时候返回便可,而且metaData属性可以实际数据并列放在一起:


{
    metaData: {
        totalProperty: 'results',
        root: 'rows',
        id: 'id',
        fields: [
            {name: 'name'},
            {name: 'occupation'}
        ]
    },
    results: 2,
    rows: [
        { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
        { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' }
    ]
}
@cf

配置项

配置项 定义者

公告属性

属性 定义者

公共方法

方法 定义者

公告事件

这个类没公共的事件。