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}]");
%>