ExtJS 数据处理-ChainedStore类型
作者:互联网
更新记录
2022年7月17日 发布。
2022年7月6日 从笔记迁移到博客。
ExtJS教程汇总:https://www.cnblogs.com/cqpanda/p/16328016.html
Ext.data.ChainedStore(链式数据存储)
说明
ChainedStore最大的好处在于可以将一个Store数据划分给多个组件使用
A chained store is a store that is a "view" of an existing store
The data comes from the source,
The view of the store may be sorted & filtered independently without having any impact on the source store
重点注意:
The record instances are shared between all chained stores and the base store
Any updates made to any of the records will be propagated through to all linked stores
实例:配置ChainedStore
实例:自定义简单的ChainStore
继承自Ext.data.ChainedStore即可
Ext.define('PandaApp.store.PandaStore', {
extend: 'Ext.data.ChainedStore',
//...
});
实例:配置指向的Store
使用config配置项的source配置项即可
注意:source的值可以是store实例 或 store实例的Id
//测试用的Model
Ext.define('PandaApp.model.User', {
extend: 'Ext.data.Model',
idProperty: 'Id',
fields: [
{ name: 'Id', type: 'int' },
{ name: 'Name', type: 'string' }
]
});
//测试用的Store
Ext.define('PandaApp.store.PandaStore', {
extend: 'Ext.data.Store',
model: 'PandaApp.model.User',
});
var storeInstance = Ext.create('PandaApp.store.PandaStore');
//新建model的实例记录
var user1 = Ext.create('PandaApp.model.User', {
Id : 666,
Name : 'Panda'
});
var user2 = Ext.create('PandaApp.model.User', {
Id : 888,
Name : 'dog'
});
var user3 = Ext.create('PandaApp.model.User', {
Id : 999,
Name : 'Monkey'
});
//添加数据到Store中
storeInstance.add([user1,user2,user3]);
//自定义ChainedStore
Ext.define('PandaApp.store.PandaChainedStore', {
extend: 'Ext.data.ChainedStore',
config: {
source: storeInstance //配置关联的Store
}
});
//创建ChainedStore实例
var chainedStore = Ext.create('PandaApp.store.PandaChainedStore');
实例:定义过滤
使用config配置项的filters配置项即可
//测试用的Model
Ext.define('PandaApp.model.User', {
extend: 'Ext.data.Model',
idProperty: 'Id',
fields: [
{ name: 'Id', type: 'int' },
{ name: 'Name', type: 'string' }
]
});
//测试用的Store
Ext.define('PandaApp.store.PandaStore', {
extend: 'Ext.data.Store',
model: 'PandaApp.model.User',
});
var storeInstance = Ext.create('PandaApp.store.PandaStore');
//新建model的实例记录
var user1 = Ext.create('PandaApp.model.User', {
Id : 666,
Name : 'Panda'
});
var user2 = Ext.create('PandaApp.model.User', {
Id : 888,
Name : 'dog'
});
var user3 = Ext.create('PandaApp.model.User', {
Id : 999,
Name : 'Monkey'
});
//添加数据到Store中
storeInstance.add([user1,user2,user3]);
console.log(storeInstance.count()); //3
//自定义ChainedStore
Ext.define('PandaApp.store.PandaChainedStore', {
extend: 'Ext.data.ChainedStore',
config: {
source: storeInstance, //配置关联的Store
filters: [ //定义过滤
{
property: 'Name',
value: 'dog'
}
]
}
});
//创建ChainedStore实例
var chainedStore = Ext.create('PandaApp.store.PandaChainedStore');
console.log(chainedStore.count()); //1
实例:定义排序
使用config配置项的sorters配置项即可
//测试用的Model
Ext.define('PandaApp.model.User', {
extend: 'Ext.data.Model',
idProperty: 'Id',
fields: [
{ name: 'Id', type: 'int' },
{ name: 'Name', type: 'string' }
]
});
//测试用的Store
Ext.define('PandaApp.store.PandaStore', {
extend: 'Ext.data.Store',
model: 'PandaApp.model.User',
});
var storeInstance = Ext.create('PandaApp.store.PandaStore');
//新建model的实例记录
var user1 = Ext.create('PandaApp.model.User', {
Id : 666,
Name : 'Panda'
});
var user2 = Ext.create('PandaApp.model.User', {
Id : 888,
Name : 'dog'
});
var user3 = Ext.create('PandaApp.model.User', {
Id : 999,
Name : 'Monkey'
});
//添加数据到Store中
storeInstance.add([user1,user2,user3]);
console.log(storeInstance.count()); //3
//自定义ChainedStore
Ext.define('PandaApp.store.PandaChainedStore', {
extend: 'Ext.data.ChainedStore',
config: {
source: storeInstance, //配置关联的Store
sorters: [ //定义排序
{
property: 'Name',
direction: 'ASC'
}
]
}
});
//创建ChainedStore实例
var chainedStore = Ext.create('PandaApp.store.PandaChainedStore');
console.log(chainedStore.count()); //3
实例:单Store多ChainedStore实例
//测试用的Model
Ext.define('PandaApp.model.User', {
extend: 'Ext.data.Model',
idProperty: 'Id',
fields: [
{ name: 'Id', type: 'int' },
{ name: 'Name', type: 'string' },
]
});
//测试用的Store
Ext.define('PandaApp.store.PandaStore', {
extend: 'Ext.data.Store',
model: 'PandaApp.model.User',
});
var storeInstance = Ext.create('PandaApp.store.PandaStore');
//新建model的实例记录
var user1 = Ext.create('PandaApp.model.User', {
Id : 666,
Name : 'Panda',
});
var user2 = Ext.create('PandaApp.model.User', {
Id : 888,
Name : 'Dog',
type: 'Cute2'
});
var user3 = Ext.create('PandaApp.model.User', {
Id : 999,
Name : 'Monkey',
});
//添加数据到Store中
storeInstance.add([user1,user2,user3]);
console.log(storeInstance.count()); //3
//自定义ChainedStore
Ext.define('PandaApp.store.chainedStore.Type1', {
extend: 'Ext.data.ChainedStore',
config: {
source: storeInstance, //配置关联的Store
filters: [ //定义过滤
{
property: 'Name',
value: 'Panda'
}
]
}
});
Ext.define('PandaApp.store.chainedStore.Type2', {
extend: 'Ext.data.ChainedStore',
config: {
source: storeInstance, //配置关联的Store
filters: [ //定义过滤
{
property: 'Name',
value: 'Dog'
}
]
}
});
Ext.define('PandaApp.store.chainedStore.Type3', {
extend: 'Ext.data.ChainedStore',
config: {
source: storeInstance, //配置关联的Store
filters: [ //定义过滤
{
property: 'Name',
value: 'Monkey'
}
]
}
});
//创建ChainedStore实例
var chainedStoreType1 = Ext.create('PandaApp.store.chainedStore.Type1');
var chainedStoreType2 = Ext.create('PandaApp.store.chainedStore.Type2');
var chainedStoreType3 = Ext.create('PandaApp.store.chainedStore.Type3');
console.log(chainedStoreType1.count()); //1
console.log(chainedStoreType1.count()); //1
console.log(chainedStoreType1.count()); //1
标签:create,var,Ext,ChainedStore,数据处理,PandaApp,model,ExtJS,store 来源: https://www.cnblogs.com/cqpanda/p/16452771.html