概述:store是一个存储数据对象Model的集合缓存,它可以为extjs的可视化组件提供数据(GridPanel,ComboBox)等
1、创建model数据模型
Ext.define("person",{
extend:"Ext.data.Model",
fields:[
{name:"name"},
{name:"age"}
],
proxy:{
type:"memory"
}
});
2、创建store
data:指定的是一个数组的对象数组,为这个数据集来赋值
model:指定的是数据模型
autoLoad设置自动加载,默认为false
fields:store本身也可以当作一个数据模型用fields字段来指定模型属性
proxy:指定的代理机制,这时store不能指定data字段,data比proxy优先级高,使用proxy这个不能指定,否则代理不会执行
使用代理机制来赋值,应该用load来加载,不能自动加载,因为程序不会等到请求后才执行下一条记录
vars=new Ext.data.Store({
fields:[
{name:"name"},
{name:"age"}
],
//data:[ //data指定的数据 data比proxy优先级高,使用proxy这个不能指定,否则代理不会执行
// {name:"marico",age:21},
// {name:"zhang",age:21}
//],
model:"person",
proxy:{ //使用代理机制来赋值,使用应该用load来加载,不能自动加载,因为程序不会等到请求后才执行下一条记录
type:"ajax",
url:"person.jsp"
}//,
//autoLoad:true //设置自动加载 默认为false
});
3、遍历数据集store里面的数据和方法使用
filter方法:过滤的方法,第一个参数指定属性名,第二个参数指定的是值
find方法:根据一定的条件来查找数据 返回的是查找到指定的对象的坐标,如果没有找到返回-1
参数:第一个指定的属性名
第二个:指定的是值,也可以用正则表达式 点应需要在前面加\转义。
第三个:指定的是从第几个开始查找
第四个:是否全部查找
第五个:是否区分大小写
第六个:是否完全匹配?
getName方法 获取类的名字 先调用自身的Class属性再调用getName方法, 相当于java中的反射机制
//s.each(function(model){
// alert(model.get("name"));
//});
如果使用代理机制,则需要load把data字段取消和autoLoad字段取消
s.load(function(records,operation,success){
Ext.Array.each(records,function(model){
//alert(model.get("name"));
});
//过滤
//s.filter("name","marico");
s.each(function(model){
alert(model.get("name"));
});
varindex=s.find('name','marico',0,false,true,false);
alert(index);
alert(s.Class.getName());
});