先来看看这个对象是干嘛的:
Json:JS的数据格式 Store:名词是商店,商店里可以摆放货物(数据).动词是储藏,商店里的货物都是按一定规律排放的,自然我们的数据也要按一定的规律排放. JsonStore:通俗讲就是Json格式数据的一个商店了.里面不仅有数据,而且还可以定义数据的存放规则,还有店员(方法),你可以用方法获取数据,以及把这些数据删除\更新\添加等… Ext.data.JsonReader 对象 那我们先来说说怎么摆放数据,不然货物进来了乱堆可不行.这就要说到Ext.data.JsonReader 这个对象了. 因为 Ext.data.JsonStore 已经包含了 Ext.data.JsonReader 所以我们在新建一个 Ext.data.JsonStore 实例的时候,并不需要再建个 Ext.data.JsonReader 出来. 这里把 Ext.data.JsonReader 的几个常用属性列出来.其它的可以去参考它的API: JsonReader . 我们要先拿到货了,才能判断这个货是摆在哪里对吧,所以先拿货物清单出来瞧瞧: { results: 2000,rows: [ { id: 1,firstname: 'Bill',occupation: 'Gardener' },{ id: 2,firstname: 'Ben',occupation: 'Horticulturalist' },... ] } { results: 2000,rows: [ { id: 1,... ] } 这清单上有2个属性,results 说明这个货物有2000件,rows 是个数组,自然是2000条了,里面的单条信息就是我们要的具体货物信息了.单件货物有3个属性 id,firstname 和 occupation (天,这些’货物’好像是人) . (注意这个清单里的属性是我们写的.所以也可以是别的,如:你可以把 results 写成totalCount 或者把 rows 写成 data,或者把 occupation 写成 other,当然 id 这个属性有点特殊,但也没死规定不能换成别的,哈哈 ) 好了,我们有清单了,但我们要把这个清单录进电脑,让其他人也能看到,可是我们能一个个输这些也太麻烦了.所以我们能要告诉电脑怎么读这个清单. 首先是totalProperty : ‘results’就是确定货物的总件数了. 其次是root :’rows’ 告诉电脑我们的清单是哪个数组 现在我们来设置 fields 来读取这个数组: "fields": [ {"name": "name"},{"name": "job","mapping": "occupation"} ] "fields": [ {"name": "name"},"mapping": "occupation"} ] {"name": "job","mapping": "occupation"} 告诉电脑把occupation 属性转为 job. {"name": "name"} 告诉电脑把 id 转成 name. 为什么是id呢,这边又涉及的JsonReader 对象里的一个属性idProperty(默认值是’id’),他告诉电脑,id 是默认的属性.你也可以把其它的设成默认属性,如idProperty: ‘firstname’,这样当我们{"name": "name"} 的时候,就是告诉电脑把firstname’转成name 了. Fields 现在看来是个数组.那什么时候才是个对象呢,就是当rows里的单条记录只有1个属性的时候了. Ext.data.JsonStore 对象加载数据 好了.我们已经告诉机器怎么读清单了,但现在有个问题,我们要去哪里读这个清单.这里就开始用到JsonStore 自己的属性了. url : 数据清单的地址,这个地址输出的结果就是上面已经写了的那个 2000数据的清单.这里会用AJAX调用. autoLoad :是否在JsonStore对象创建后自动打开 url并加载数据.不写这个属性默认是不会自动加载,等同于写autoLoad:false autoLoad 可以是布尔,也可以是一个对象,当是对象的时候,这个对象就会在加载的时候传递到JsonStore的load 方法里.这个对象可以参考API中的 load 方法,有一些特定的属性.当我们把autoLoad 设为false 或者不设置该值时,我们就需要在后续的代码中手动调用 load() 方法才能打开url并加载数据了. JsonStore 还有其它的配置参数以及方法,如:如何得到单条数据,如何添加新数据\删除\更新等.. 详见API: JsonStore load方法. load(Object options) : Boolean 默认是返回true,但当我们在监听beforeload 事件时,定义的句柄返回 false,则load 停止(也就是不打开url加载数据了)并返回false. options:load时定义的参数,这个就是autoLoad那要传的一样了. params 打开url后附带传递的参数对象,如:{id:’1234’} callback 函数,当数据加载完成后调用的函数,有3个参数如: r : Ext.data.Record[] 记录集数组. options : 发送给服务器的对象{params:{id:’1234’}} success : 是否成功,布尔. scope 定义callback的作用域 add 是添加到现有数据后,还是替换现有数据.默认是替换 false:替换现有数据