Ext.data-Store

简介: Ext.data.Storestore是一个为Ext器件提供record对象的存储容器,行为和属性都很象数据表方法:不列举继承来的方法Store( Object config )构造,config定义为{ autoLoad : Boolean/Object,    //自动载入 baseParams...
Ext.data.Store
store是一个为Ext器件提供record对象的存储容器,行为和属性都很象数据表

方法:不列举继承来的方法
Store( Object config )
构造,config定义为{
 autoLoad : Boolean/Object,    //自动载入
 baseParams : Object,    //只有使用httpproxy时才有意义
 data : Array,        //数据
 proxy : Ext.data.DataProxy,//数据代理
 pruneModifiedRecords : boolean,//清除修改信息
 reader : Ext.data.Reader,    //数据读取器
 remoteSort : boolean,    //远程排序?
 sortInfo : Object,    //{field: "fieldName", direction: "ASC|DESC"}这样的排序对象
 url : String,        //利用url构造HttpProxy
}

add( Ext.data.Record[] records ) : void
增加记录records 到store

addSorted( Ext.data.Record record ) : void
增加record到store并排序(仅本地排序时有用)

clearFilter( Boolean suppressEvent ) : void
清除过滤器

collect( String dataIndex, [Boolean allowNull], [Boolean bypassFilter] ) : Array
收集由dataIndex指定字段的惟一值

commitChanges() : void
提交Store所有的变更,会引发Update事件


filter( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : void
设定过滤器
field:String    //字段名
value:String    //RegExp 如果是字符器,检查field是否以value开始,如果是正则,检查是否匹配
anyMatch:Boolean //匹配任何部分而不仅令是开始
caseSensitive:Boolean //大小写敏感?

filterBy( Function fn, [Object scope] ) : void
更强悍的过滤方法.fn接收两个参数record和id

find( String property, String/RegExp value, [Number startIndex], [Boolean anyMatch], [Boolean caseSensitive] ) : Number
找到符合条件的第一条记录,参数同filter

findBy( Function fn, [Object scope], [Number startIndex] ) : Number
参见filterBy

getAt( Number index ) : Ext.data.Record
getById( String id ) : Ext.data.Record
依充号/id得到record对象

getCount() : void
得到记录数

getModifiedRecords() : Ext.data.Record[]
得到修改过的记录集

getRange( [Number startIndex], [Number endIndex] ) : Ext.data.Record[]
得到指定范围的记录集合

getSortState() : void
得到排序状态:显然不是void而是返回一个排序对象,同sortInfo一样的结构{field: "fieldName", direction: "ASC|DESC"}

getTotalCount() : void
这个对于翻页信息还是很有用的

indexOf( Ext.data.Record record ) : Number
indexOfId( String id ) : Number
由记录或id得到序号

insert( Number index, Ext.data.Record[] records ) : void
在指定的位置插入记录,并引发add事件

isFiltered() : Boolean
当前设置了过滤器则返回真

load( Object options ) : void
由指定的Proxy使用指定的reader读取远程数据
options定义为
{
    params :Object,    //请求url需要附加的参数
    callback :Function//回叫方法,接收三个参数
      //r : Ext.data.Record[] //返回的record数组
      //options: Options load方法传入的options
      //success: Boolean //成功
    scope :Object, //范围.默认是store本身
    add :Boolean 追加还是更新
}


loadData( Object data, [Boolean append] ) : void
用法比load简单一点,目的是一样的,只是这次数据由本地读取

query( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : MixedCollection
queryBy( Function fn, [Object scope] ) : MixedCollection
查询,参数和find类似,但返回所有符合条件的record,而不是第一个符合条件记录的序号

rejectChanges() : void
放弃所有的变更

reload( [Object options] ) : void
重新载入,相当于 load(options,false),如果连options都没有传入,则取最后一次load时使用的参数

remove( Ext.data.Record record ) : void
移除指定记录

removeAll() : void
移除所有记录

setDefaultSort( String fieldName, [String dir] ) : void
设置默认排序规则

sort( String fieldName, [String dir] ) : void
排序

sum( String property, Number start, Number end ) : Number
对property字段由start开始到end求和

事件列表
add : ( Store this, Ext.data.Record[] records, Number index )
beforeload : ( Store this, Object options )
clear : ( Store this )
datachanged : ( Store this )
load : ( Store this, Ext.data.Record[] records, Object options )
loadexception : ()
metachange : ( Store this, Object meta )
remove : ( Store this, Ext.data.Record record, Number index )
update : ( Store this, Ext.data.Record record, String operation )
看名字都很简单,参数也不复杂,略过


用例
// 得到远程json对象
//
其中jsoncallback.js内容为
//
{ 'results': 2, 'rows': [
//
    { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
//
    { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]
//
}
//
定义proxy
       var  proxy = new  Ext.data.HttpProxy( ... {url:'jsoncallback.js'} );
// 定义reader
       var  reader = new  Ext.data.JsonReader(
        
... {
        totalProperty: 
"results",//totalRecords属性由json.results得到
        root: "rows",            //构造元数据的数组由json.rows得到
        id: "id"                //id由json.id得到
        }
,[
        
... {name: 'name', mapping: 'name'} ,
        
... {name: 'occupation'}              // 如果name与mapping同名,可以省略mapping
        ]
    )
// 构建Store   
     var  store = new  Ext.data.Store( ... {
      proxy:proxy,
      reader:reader
   }
);
// 载入
store.load();


示例2
//得到远程xml文件
//其中xml文件内容为
<? xml version="1.0" encoding="utf-8"  ?>
< dataset >
  
< results > 2 </ results >
  
< row >
    
< id > 1 </ id >
    
< name > Bill </ name >
    
< occupation > Gardener </ occupation >
  
</ row >
  
< row >
    
< id > 2 </ id >
    
< name > Ben </ name >
    
< occupation > Horticulturalist </ occupation >
  
</ row >
</ dataset >


var  proxy = new  Ext.data.HttpProxy( ... {url:'datasource.xml'} );
   
    
var  reader  =   new  Ext.data.XmlReader( ... {
       totalRecords: 
"results",
       record: 
"row",        
       id: 
"id"                
    }
, [
       
... {name: 'name', mapping: 'name'} ,
       
... {name: 'occupation'}            
    ]);
   
var  store = new  Ext.data.Store( ... {
      proxy:proxy,
      reader:reader
   }
);
store.load();


示例3
// 从本地数组得到
  var  arr = [ [ 1 ' Bill ' ' Gardener ' ], [ 2 ' Ben ' ' Horticulturalist ' ] ];
var  reader  =   new  Ext.data.ArrayReader(
   
... {id: 0} ,
   [
    
... {name: 'name', mapping: 1} ,        
    
... {name: 'occupation', mapping: 2}    
    ]);
   
    
var  store = new  Ext.data.Store( ... {
      reader:reader
   }
);
   store.loadData(arr); 
目录
相关文章
|
5月前
|
JavaScript 前端开发
为什么import store from ‘./store‘和 ‘./store/index‘一样
为什么import store from ‘./store‘和 ‘./store/index‘一样
|
9月前
data——watsh
data——watsh
52 0
|
5月前
|
分布式计算 JavaScript 前端开发
DATA-X和DATA-V
DATA-X和DATA-V
88 2
|
移动开发
H5 data-*容易忽略的问题
H5 data-*容易忽略的问题
83 0
H5 data-*容易忽略的问题
|
PHP 开发工具
报错 invalid [default store dir]: /tmp/
php sdk解压以后文件如下   推荐处理方案    1.如果使用支付宝sdk,首先lotusphp_runtime 文件也要一起使用  支付宝现在的php sdk中有lotus框架可以和aop文件   夹放在同一级    2.
833 0
|
数据格式 JSON 前端开发
Ext6中从Component如何找到Store和Model
这个问题挺傻的,也很基础。View部分的代码 Ext.define('RUKU.view.hr.HRUserList', { extend: 'Ext.grid.Panel', xtype: 'hruserlist', // 引入store requires:[ 'RUKU.
1728 0
|
JSON 数据格式 网络架构
EXT.JS6中的model,store,proxy的一些用法
//one-to-one Ext.define('Address', { extend: 'Ext.data.Model', fields: [ 'address', 'city', 'state', 'zipcode' ] }); Ext.
1323 0