day02
数据模型
数据模型三大部分:model proxy store
1、普通Model的创建
数据模型对真实世界中对事物在系统中的反应
extjs4.0中的mode相当于DB中的table或java中的Class
(function(){
Ext.onReady(function(){
//利用Ext.define来创建模型类(方法一)
//DB table person(name,age,email)
Ext.define("person",{
extend:"Ext.data.Model",
fields:[
{name:'name',type:'auto'},
{name:'age',type:'int'},
{name:'email',type:'auto'}
]
});
2、利用Ext.regModel创建模型
//MVC模式中model一定是M层(方法二)
Ext.regModel("user",{
fields:[
{name:'name',type:'auto'},
{name:'age',type:'int'},
{name:'email',type:'auto'}
]
});
3、创建model的实例 实例化对象的方法
//实例化person类
//1.new关键字
var p = new person({
name:'cat',
age:26,
email:'cat@163.com'
});
alert(p.get('name'));
/**若加载报错:ext is not define,可能原因是引用类库的路径书写不正确*/
//2.create关键字
var p1 = Ext.create("person",{
name:'cat',
age:26,
email:'cat@163.com'
});
//3.ModelMgr关键字
var p2 = Ext.ModelMgr.create({
name:'cat',
age:26,
email:'cat@163.com'
},'person');
});
})();
4、Validatiions
(function(){
Ext.data.validations.lengthMessage = "错误的长度";//汉化
Ext.onReady(function(){
/**5、自定义验证器*/
/**扩展
Ext.apply(Ext.data.validations,{
age:function(config,value){
var min = config.min;
var max = config.max;
if(min <= value && value <= max){
return true;
}else{
this.ageMessage = this.ageMessage+"数值应该在["+min+"~"+max+"]";
return false;
}
},
ageMessage:'age数据出现了错误'
});
*/
Ext.define("person",{
extend:"Ext.data.Model",
fields:[
{name:'name',type:'auto'},
{name:'age',type:'int'},
{name:'email',type:'auto'}
],
validations:[
{type:"length",field:"name",min:2,max:6}
/**
{type:'age',field:'age',min:0,max:150}*/
]
});
var p1 = Ext.create("person",{
name:'cat',
age:25,
email:'cat@163.com'
});
var errors = p1.validate();
var errorInfo = [];
errors.each(function(v){
errorInfo.push(v.field+" "+v.message);
});
alert(errorInfo.join("\n"));
});
})();
6、简单数据代理,详细的代理proxy以后讲
//proxy就是完成数据的CRUD(增删改查)的代理对象
proxy.js文件
(function(){
Ext.onReady(function(){
Ext.define("person",{//指明代理谁
extend:"Ext.data.Model",
fields:[
{name:'name',type:'auto'},
{name:'age',type:'int'},
{name:'email',type:'auto'}
],
proxy:{//数据代理
type:'ajax',//指明代理方法
url:'person.jsp'//指明代理地址?
}
//此时没有请求jsp,证明代理在类的创建时不会请求数据资源
});
var p = Ext.ModelManager.getModel("person");
//此时是获取代理类,不用create
//此时p没有数据,用load从jsp中加载数据
p.load(1,{//这里的1是数据id
scope:this,
failure:function(record,operation){
},
success:function(record,operation){
alert(record.data.name);
},
callback:function(record,operation){
}
});
});
})();
person.jsp文件
<%@page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%
System.out.print(request.getParameter("id"));
response.getWriter().write("{name:'cat',age:26,email:'cat@126.com'}");
%>
7、Model的一对多和多对一(先简单了解)
(function(){
Ext.onReady(function(){
//老师类
Ext.regModel("teacher",{
fields:[
{name:'teacherId',type:'int'},
{name:'name',type:'auto'}
],
hasMany:{
model:'student',
name:'getStudent',
filterProperty:'teacher_Id'
}
});
//学生类
Ext.regModel("student",{
fields:[
{name:'studentId',type:'int'},
{name:'name',type:'auto'},
{name:'teacher_Id',type:'int'}
]
});
//t.students 得到子类的一个store数据集合
});
})();
02extjs的数据模型
最新推荐文章于 2017-12-13 16:39:00 发布