Extjs中store的load監聽的回調函數
在ExtJS中的API中對store的load監聽有這樣的一段描述,如下:
load( Store this,
Ext.data.Record records,
Object options
)
當一筆新的Record加載完畢后觸發。Fires after a new set of Records has been loaded
監聽器會傳入以下的參數:
this
Storerecords
Ext.data.Record加載好的Record(Ext.data.Record[])。The Records that were loadedoptions
Object所指定的laoding操作。The loading options that were specified對于這三個參數:sto,records和options,用到的最多的sto,后面兩個很少用到。在今天開發的時候,遇到了一些問題,正是這幾個參數幫了我的忙。對于這三個參數,我找了一下資料,貼出來:寫道API中load事件回調的簽名 function( Store this, Ext.data.Record[] records, Object options )其中對我有用的是options這個參數,用用處在如下代碼中:
load事件在加載數據后出發, 比如autoLoad: true, 調用load方法, laodData方法, 調用add方法是不會觸發的
this : Store, 觸發事件的store本身的引用, 在定義事件時沒有定義scope的話, this參數與函數中的this指針等價. 在這邊使用this作為參數名稱比較容易混淆, 函數參數與函數內部的this指針是完全無關的. 應避免使用this作為參數名稱. 一般定義回調時這樣 function(_store, _records, _ops), 添加_標示內部變量, JavaScript變量作用域非常容易引起混亂, 命名規范非常重要
records : Ext.data.Record[]
The Records that were loaded
大部分情況下等價于store的所有數據, 有一種特殊情況, 調用loadData方法指定第2個參數append為true時, 標示保留原有數據, 那records僅僅是本次load添加的數據
options : Object
The loading options that were specified (see load for details)
調用load方法時提供的參數對象的引用. 即load事件若是由調用load方法觸發, 則options參數即是調用load方法的參數, 比如通常分頁都會有參數: store.load({params: {start: 0, limit: 50}}); 則options={params: {start: 0, limit: 50}}其中b就是這個options,只不過是名字不同而已。store_loadByIns是公司類庫里的一個方法,這個方法的第一個參數一個store實例,第二個參數是 需要傳的參數列表,以json形式。第三個是要增加的監聽的名字,第四個就是回調函數。如果想要在load之后使用傳入的哪個參數,就得使用options這個參數了,就是上面代碼中的b,b.params.dbid就是加載這個store時候用到的那個dbid。- store_loadByIns(isaccStore, {ip: ips[j], dbid: dbids[j]}, "load", function (sto, a, b) {
- // alert(a.length);
- if (sto.getCount() >= 0) {
- unAccessable.push(b.params.dbid);
- }
- })