ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ExtJS 数据处理-ChainedStore类型

2022-07-17 08:02:40  阅读:215  来源: 互联网

标签:create var Ext ChainedStore 数据处理 PandaApp model ExtJS store


更新记录
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

标签:create,var,Ext,ChainedStore,数据处理,PandaApp,model,ExtJS,store
来源: https://www.cnblogs.com/cqpanda/p/16452771.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有