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進行關聯, 相似於數據庫的外鍵