Store包含兩個數據緩存 - snapshot和data,grid,combo等控件的顯示全部基于data,而snapshot是數據的完整緩存,當首次應用過濾器時,snapshot從data中備份數據,當應用過濾器時,filter從snapshot獲取一份完整的數據,并在其中進行過濾,過濾后的結果形成了data并傳遞給展示,及data總是過濾后的數據,而snapshot總是完整的數據,不過看名字讓人誤以為它們的作用正好相反。
相應地,當進行store的增刪改時,要同時維護兩個緩存。
問題
Store包含兩個增加Record的方法,即insert和add,其中的insert沒有更新snapshot所以當重新應用filter時,即data被重新定義時,在data中使用insert新增的記錄是無效的。
解決方法
用add不要用insert,如果用insert,記得把數據寫進snapshot: store.snapshot.addAll(records)
@2008 楊一. 版權所有. 保留所有權利