[06]EXTJS4.0的數據集store

 store是一個存儲數據對象Model的集合緩存,它可以爲extjs的可視化組件提供數據(GridPanel,ComboBox)等

類結構
Ext.data.AbstractStore
     Ext.data.Store  沒有特殊情況這個類就可以滿足日常的開發了
            Ext.data.JsonPStore
            Ext.data.XmlStore
            Ext.data.DirectStore
            Ext.data.ArrayStore   內置輔助的類
            Ext.data.JsonStore    內置輔助的類
     Ext.data.TreeStore
Ext.data.Store 使用
    參數
       autoLoad(Boolean/Object):自動加載數據,自動調用load
       data(Array):內置數據對象的數組,初始化的是就要被裝載在
       model(Model):數據集合相關的模型
       fields(Field):字段的集合,程序會自動生成對於Model的方法
       each(Function f,[Object scope]):void 變量數據中的Model
------------------------------------------------------------------------------
這個例子主要講Ext.data.Store,包括如何創建,設置data,model,autoLoad屬性等,each方法
store.js
  1. (function(){ 
  2.     Ext.Loader.setConfig({ 
  3.       enabled:true 
  4.     }); 
  5.     Ext.onReady(function(){ 
  6.         Ext.define("person",{ 
  7.          extend:'Ext.data.Model'
  8.             fields:[ 
  9.                {name:'name'}, 
  10.                {name:'age'
  11.             ], 
  12.             proxy:{ 
  13.                type:'memory' 
  14.             } 
  15.         }); 
  16.     var s = new Ext.data.Store({ 
  17.              data:[ 
  18.                  {name:'uspcat.com',age:1}, 
  19.                  {name:'yfc',age:26} 
  20.              ], 
  21.              model:'person'
  22.              autoLoad:true 
  23.         }); 
  24.         s.each(function(model){ 
  25.        console.log(model.get('name')); 
  26.         }); 
  27.     }); 
  28. })(); 
運行結果:
 

uspcat.com

yfc

-------------------------------------------------------------------------------------
這個例子主要講Ext.data.Store的fields屬性,可以提供類似Model的功能
store2.js
  1. (function(){ 
  2.     Ext.Loader.setConfig({ 
  3.       enabled:true 
  4.     }); 
  5.     Ext.onReady(function(){ 
  6.      var s = new Ext.data.Store({ 
  7.              fields:[ 
  8.          {name:'name'}, 
  9.                 {name:'age'
  10.           ], 
  11.              data:[ 
  12.                  {name:'uspcat.com',age:1}, 
  13.                  {name:'yfc',age:26} 
  14.              ], 
  15.              autoLoad:true 
  16.         }); 
  17.         s.each(function(model){ 
  18.        console.log(model.get('name')); 
  19.         }); 
  20.     }); 
  21. })(); 
運行結果:
 

uspcat.com

yfc

--------------------------------------------------------------------------------------
這個例子主要講Ext.data.Store的load方法和使用代理的方式,和注意使用ajax代理的時候不能使用each方法,因爲是異步的,不能保證數據已經取回來了。
store3.js
  1. (function(){ 
  2.     Ext.Loader.setConfig({ 
  3.       enabled:true 
  4.     }); 
  5.     Ext.onReady(function(){ 
  6.     var s = new Ext.data.Store({ 
  7.              fields:[ 
  8.          {name:'name'}, 
  9.                 {name:'age'
  10.          ], 
  11.              proxy:{ 
  12.          type:'ajax',//方式的是ajax,程序不會阻塞,這是異步的 
  13.                 url:'person.jsp' 
  14.              } 
  15.              //,autoLoad:true//這個放開會自動load,加上下面我們load的,總共會有兩遍 
  16.         }); 
  17.  
  18.     s.load(function(records,operation,success){ 
  19.         Ext.Array.each(records,function(model){ 
  20.            console.log(model.get('name')); 
  21.         }); 
  22.     }); 
  23.  
  24.     }); 
  25. })(); 
person.jsp
  1. <%@page language="java" contentType="text/html" pageEncoding="UTF-8"%> 
  2. <% 
  3.    response.getWriter().write("[{name:'uspcat.com',age:1},{name:'yfc',age:25}]"); 
  4. %> 
運行結果:
 

uspcat.com

yfc

當autoLoad:false的時候,person.jsp只會訪問一次:

當autoLoad:false的時候,person.jsp只會訪問兩次:
 

 
----------------------------------------------------------------------------
這個例子主要講Ext.data.Store的filter方法
store4.js
  1. (function(){ 
  2.     Ext.Loader.setConfig({ 
  3.       enabled:true 
  4.     }); 
  5.     Ext.onReady(function(){ 
  6.      var s = new Ext.data.Store({ 
  7.              fields:[ 
  8.          {name:'name'}, 
  9.                 {name:'age'} 
  10.           ], 
  11.              proxy:{ 
  12.          type:'ajax',//方式的是ajax,程序不會阻塞,這是異步的 
  13.                 url:'person.jsp' 
  14.              } 
  15.              //,autoLoad:true//這個放開會自動load,加上下面我們load的,總共會有兩遍 
  16.         }); 
  17.  
  18.     s.load(function(records,operation,success){ 
  19.                 // s.filter('name','yfc'); 
  20.                 s.each(function(model){ 
  21.              console.log(model.get('name')); 
  22.                 }); 
  23.         }); 
  24.  
  25.     }); 
  26. })(); 
運行結果:
1.去掉了s.filter('name','yfc');
 

uspcat.com

yfc

2.沒有去掉s.filter('name','yfc');
 
yfc
--------------------------------------------------------------------------------
這個例子主要講Ext.data.Store的find方法,查找字符串的位置
store5.js
  1. (function(){ 
  2.     Ext.Loader.setConfig({ 
  3.       enabled:true 
  4.     }); 
  5.     Ext.onReady(function(){ 
  6.     var s = new Ext.data.Store({ 
  7.              fields:[ 
  8.          {name:'name'}, 
  9.                 {name:'age'
  10.           ], 
  11.              proxy:{ 
  12.          type:'ajax',//方式的是ajax,程序不會阻塞,這是異步的 
  13.                 url:'person.jsp' 
  14.              } 
  15.              //,autoLoad:true//這個放開會自動load,加上下面我們load的,總共會有兩遍 
  16.         }); 
  17.  
  18.     s.load(function(records,operation,success){ 
  19.                 var index = s.find('name','yfc',0,false,true,false); 
  20.                 console.log(index); 
  21.         }); 
  22.  
  23.     }); 
  24. })(); 
運行結果:
 
1
qqqqqqqqqqq
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章