extjs的表格, 下拉列表等控件, 均可以与Store关联, 由Store代理数据操做, 所以常常须要用Store来添加、删除,读取、修改数据。javascript
Store能够指定Proxy来加载数据, 这个在API Docs中很容易找到示例。这里只举出示例中没有提到的操做, 须要仔细阅读api。java
var store = Ext.create('Ext.data.Store', { fields: ['time', 'send', 'recv'], autoSync: true, proxy: { type: 'memory', reader: { type: 'json', root: 'data' } } });
这是一个本地的store, 有三个字段。数据库
store.add({time: Ext.Date.format(new Date(), "H:i:s.u"), recv: "SEND", send: "RECV"});
Store的add函数原型是这样的(API docs):json
add( model ) : Ext.data.Model[]api
Parameters数组
An array of Model instances or Model configuration objects, or variable number of Model instance or config arguments. 我来翻译一下: model实例或配置的数组, 或者是任意个model实例或配置(也就是可变入参, 不懂的能够去搜javascript的arguments对象)服务器
Returns函数
The model instances that were addedspa
也就是说, 入参model能够是四种类型, 翻译
a. Ext.data.Model[], Model数组
b. Object[], config数组
c. Ext.data.Model, 单个Model对象, 能够填任意多个(可变参数)
d. Object, 单个config对象,能够填任意多个(可变参数)。
本示例中用的就是第4个类型, 入参是一个config, extjs将根据这个config, 最终建立一个Model[], 添加到Store中。
remove( records )
删除记录。records非常单个Model对象,或Model数据, 或者是一个index, 或者是一个index的对象。
index是从0开始计数的
removeAt(index, count), 从index开始删除count条记录
rmoveAll([silent]), 删除全部的记录
1. getAt( index ) : Ext.data.Model 读取指定位置的记录, 这个很容易理解
2. find( fieldName, value, [startIndex], [anyMatch], [caseSensitive], [exactMatch] ), 根据字段的值查寻, 能够模糊匹配, 返回匹配的第一个记录值的。index。
3. findBy( fn, [scope], [startIndex] ), 调用者能够自定义一个function(record, id)来配置本身的查找策略。
4. findExact( fieldName, value, [startIndex] )。 根据字段值精确查寻, 返回匹配的第一个记录值的。index。这个函数是find的简化版
5. findRecord( fieldName, value, [startIndex], [anyMatch], [caseSensitive], [exactMatch] ) : Ext.data.Model. 与find函数功能相似, 可是直接返回了Model。默认条件下, 进行模糊查寻, 所以须要特别注意。
通常来讲, 不会直接操做store去修改数据, 由于store与grid等关联, 直接修改grid的单元格内容, grid内部已经封装好了。若是须要将修改过的内容提交到服务器, 能够经过个这函数实现
getUpdatedRecords( ) : Ext.data.Model[]
get( fieldName ) : Object 读取某个字段的值
getData( includeAssociated), 从model读取原始的数据, 注意, 这个对象在每次读取时, 都会从新生成, 并非Store中传入的那些数据, 而是一个副本, 而且只包含Model中定义过的字段。
includeAssociated表示是否包含关联的数据。 Model能够其它的Model进行关联, 相似于数据库的外键