ext js 4.2.1中關於Store的各類操做

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, 有三個字段。數據庫

1. 添加記錄

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數組

  • model : Ext.data.Model[]/Ext.data.Model.../Object[]/Object...

    An array of Model instances or Model configuration objects, or variable number of Model instance or config arguments.  我來翻譯一下: model實例或配置的數組, 或者是任意個model實例或配置(也就是可變入參, 不懂的能夠去搜javascript的arguments對象)服務器

Returns函數

也就是說, 入參model能夠是四種類型, 翻譯

a. Ext.data.Model[], Model數組

b. Object[], config數組

c. Ext.data.Model, 單個Model對象, 能夠填任意多個(可變參數)

d. Object,  單個config對象,能夠填任意多個(可變參數)。

本示例中用的就是第4個類型, 入參是一個config, extjs將根據這個config, 最終建立一個Model[], 添加到Store中。

2. 刪除記錄

remove( records )

刪除記錄。records非常單個Model對象,或Model數據, 或者是一個index, 或者是一個index的對象。

index是從0開始計數的

removeAt(index, count), 從index開始刪除count條記錄

rmoveAll([silent]), 刪除全部的記錄

3. 讀取記錄

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。默認條件下, 進行模糊查尋, 所以須要特別注意。

4. 修改記錄

通常來講, 不會直接操做store去修改數據, 由於store與grid等關聯, 直接修改grid的單元格內容, grid內部已經封裝好了。若是須要將修改過的內容提交到服務器, 能夠經過個這函數實現

getUpdatedRecords( ) : Ext.data.Model[]

5. Ext.data.Model操做

get( fieldName ) : Object 讀取某個字段的值

getData( includeAssociated), 從model讀取原始的數據, 注意, 這個對象在每次讀取時, 都會從新生成, 並非Store中傳入的那些數據, 而是一個副本, 而且只包含Model中定義過的字段。

includeAssociated表示是否包含關聯的數據。 Model能夠其它的Model進行關聯, 相似於數據庫的外鍵

相關文章
相關標籤/搜索