引自EXTJS-API文档
Class Ext.data.Store
包: | Ext.data |
定义类的文件: | Store.js |
类: | Store |
子类: | ArrayStore, DirectStore, GroupingStore, JsonStore, XmlStore |
继承自: | Observable |
Store类包装了一个对 Record 对象的客户端缓存,它为Component提供输入数据,例如 GridPanel、 ComboBox 或者 DataView。
获取数据
Store对象可以使用如下方式访问一条数据:
- DataProxy 的 可配置实现
- 将会自动传入数据的 data
- loadData 手动传入数据
读取数据
Store内部并不知道数据对象的格式 (它可能是一个Array, XML或者JSON)。 Store对象使用一个 DataReader 类的 可配置实现 从数据对象创建 Record 的实例。
Store的类型
Store存在多种实现, 它们可以定制成与指定的DataReader实现类配合使用。 这里有一个使用ArrayStore的例子,它隐含创建 一个与Array数据对象相应的reader。
var myStore = new Ext.data.ArrayStore({
fields: ['fullname', 'first'],
idIndex: 0 // 每条记录的id将会是第一个元素
});
对于特定的实现, 可以创建一个基本的Ext.data.Store ,然后配制成需要的形式:
// 创建一个Record 构造器:
var rt = Ext.data.Record.create([
{name: 'fullname'},
{name: 'first'}
]);
var myStore = new Ext.data.Store({
// 隐含创建reader
reader: new Ext.data.ArrayReader(
{
idIndex: 0 // 每条记录的id将会是第一个元素
},
rt // 记录的类型
)
});
向store中加载一些数据 (注意,数据对象是与reader对应的数组):
var myData = [
[1, 'Fred Flintstone', 'Fred'], //注意记录的id将会是第一个元素
[2, 'Barney Rubble', 'Barney']
];
myStore.loadData(myData);
记录被缓存并可以通过存取器(译者注:指getter/setter)访问。 一个向store中添加记录的例子:
var defaultData = {
fullname: 'Full Name',
first: 'First Name'
};
var recId = 100; // 为记录提供一个唯一的id
var r = new myStore.recordType(defaultData, ++recId); // 创建 新记录
myStore.insert(0, r); // 向store中插入一条 新记录(另请参见 add)