重庆熊猫 Loading

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

image

重点注意:
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
posted @ 2022-07-17 08:00  重庆熊猫  阅读(109)  评论(0编辑  收藏  举报