在Ext.data的上下文中,JsonStore和JsonReader之间的基本区别是什么?
我的意思是什么时候我应该去JsonStore,当我应该使用JsonReader时,我都提供相同的解决方案.
解决方法
实际上它们是两个不同的东西.
Ext.data.JsonReader
读取给定的JSON对象并返回稍后由相应数据存储存储的数据记录(
Ext.data.Record
对象).
Ext.data.Store
是所有Ext存储的基类,并使用辅助对象来检索数据(Ext.data.DataProxy
),写入数据(Ext.data.DataWriter
)和读取数据(Ext.data.DataReader
).这些基类有不同的风格,例如:
> Ext.data.DirectProxy
> Ext.data.HttpProxy
> Ext.data.MemoryProxy
> Ext.data.ScriptTagProxy
> Ext.data.JsonWriter
> Ext.data.XmlWriter
> Ext.data.JsonReader
> Ext.data.XmlReader
这一切都构建了一个非常可扩展的组件,允许开发人员准确配置他需要调整的内容.为了使开发人员(尤其是新开发人员)更容易,Ext附带了一些预先配置的数据存储:
> Ext.data.ArrayStore
使简单的Javascript数组读取更容易
> Ext.data.DirectStore
,只是预先配置了Ext.data.DirectProxy
和Ext.data.JsonReader
的商店
> Ext.data.JsonStore
,只是预先配置了Ext.data.JsonReader
的商店
> Ext.data.XmlStore
,只是预先配置了Ext.data.XmlReader
的商店
所以实际上Ext.data.JsonStore
只是一个便利类,可以让开发人员更轻松.
以下两个片段将创建相同(或可比较)的商店:
var store = new Ext.data.JsonStore({ url: 'get-images.PHP',root: 'images',idProperty: 'name',fields: ['name','url',{name:'size',type: 'float'},{name:'lastmod',type:'date'}] }); // or var store = new Ext.data.Store({ url: 'get-images.PHP',reader: new Ext.data.JsonReader({ root: 'images',type:'date'}] }); });