store是一个存储数据对象Model的集合缓存,他可以为extjs的可视化组建提供数据(GridPanel,ComboBox)等
类结构
Ext.data.AbstractStore
Ext.data.Store 没有特殊情况这个类就可以满日常的开发了
Ext.data.ArrayStore
Ext.data.DirectStore
Ext.data.ArrayStore 内置辅助的类
Ext.data.JsonStroe 内置辅助的类
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.onReady(function(){
- //定义了一个person的model
- // Ext.define("person",{
- // extend:"Ext.data.Model",
- // fields:[
- // {name:"name"},
- // {name:"age"}
- // ]
- // });
- //创建了一个store数据集
- var s=new Ext.data.Store({
- //store可以自己定义fields,省略model
- fields:[
- {name:"name"},
- {name:"age"}
- ],
- //如果使用了代理以后,就可以省略store的data属性了
- proxy:{
- type:"ajax",
- url:"person.jsp"
- }
- // data:[
- // {name:"hanhan313",age:23},
- // {name:"hanhan313",age:22}
- // ],
- //model:"person"
- //autoLoad:true
- });
- // s.each(function(model){
- // //Ext.Msg.alert("title",model.get("name"));
- // alert(model.get("name"));
- // });
- //除了自动加载,也可以手动加载,如果使用了代理的话应该使用手动加载,因为使用自动加载的话,在遍历的使用数据还在异步加载,没有获取到
- s.load(function(records,operation, success) {
- Ext.Array.each(records,function(model){
- alert(model.get("name"));
- });
- });
- });
person.jsp页面:
json格式的数据:
<%
response.getWriter().write("[{name:'hanhan313',age:26},{name:'hahaha',age:34}]");
%>