数据模型是对真实世界事物的抽象,model相当于DB中的table 或JAVA中的class;
Ext.onReady(function(){
//创建模型类的两种方法
//DB中对于对象的描述:table person(name,age,email);
//使用Ext.define创建模型类
Ext.define("person",{
extend:"Ext.data.Model",
fields:[
{name:'name',type:'string'},
{name:'age',type:'int'},
{name:'email',type:'string'}
]
});
//使用regModel创建模型类 该方法可以不使用extend来说明;
Ext.regModel("person",{
fields:[
{name:'name',type:'string'},
{name:'age',type:'int'},
{name:'email',type:'string'}
]
});
//实例化模型类(person类)
//使用new关键字创建
var p = new person({
name:'hello',
age:26;
email:'world@qq.com'
});
alert(p.get('name'));
//使用create创建
var p = Ext.create('person',{
name:'hello',
age:26;
email:'world@qq.com'
});
alert(p.get('age'));
//使用ModelMgr.create来创建
var p = Ext.ModelMgr.create({
name:'hello',
age:26;
email:'world@qq.com'
},'person');
alert(p.get('email'));//p为对象;person为类;
});
//validations数据验证 官方给出的例子
Ext.onReady(function(){
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [
{name: 'name', type: 'string'},
{name: 'age', type: 'int'},
{name: 'phone', type: 'string'},
{name: 'gender', type: 'string'},
{name: 'username', type: 'string'},
{name: 'alive', type: 'boolean', defaultValue: true}
],
//type表示要验证的类型 field表示待验证的类的字段 后面的表示条件;
validations: [
{type: 'presence', field: 'age'},
{type: 'length', field: 'name', min: 2},
{type: 'inclusion', field: 'gender', list: ['Male', 'Female']},
{type: 'exclusion', field: 'username', list: ['Admin', 'Operator']},
{type: 'format', field: 'username', matcher: /([a-z]+)[0-9]{2,3}/}
]
});
var p = Ext.create("person",{
name:'hello',
age : 26,
phone : '1234567',
gender : '男',
username : 'world',
alive : false
});
var errors = p.validate();
//通过for循环进行遍历
var len = errors.items.length;
var i;
for(i = 0; i < len; i++){
console.info(errors.items[i].field);
console.info(errors.items[i].message);
}
//或者通过遍历函数each()
errors.each(function(v){
console.info(v.field);
console.info(v.message);
});
});
扩展validate:
validate的属性和方法是一一对应的,如果我们需要改变错误的提示信息,只需要改变validations属性的值就行了;
Ext.data.validations.lengthMessage = "错误的长度";
第一种方法:新建一个类继承于Ext.data.validations再添加新的方法;
第二种方法:改造原生类
Ext.apply(Ext.data.validations,{
age:function(config,value){//仿造源代码中的validations的构造方法
if (value === undefined || value === null) {
return false;
}
var min = config.min;
var max = config.max;
if((min && min <= value) && (max && value <= max)){
return true;
}
else{
this.ageMessage = this.ageMessage + "他的范围应在[" + min + "~" + max + ']';
return false;
}
},
ageMessage:'age出错' //ageMessage中的age必须和上面的age相同
})
调用方法:
validations: [
{type: 'age', field: 'age', min:0, max: 150},
]
//代理:proxy
Ext.onReady(funtion(){
Ext.define('user',{
extend:"Ext.data.Model",
fields:[
{name:'name',type:'string'},
{name:'age',type:'int'},
{name:'email',type:'string'}
],
proxy:{
type:'ajax',
url:'person.jsp'
}
});
var p = Ext.ModelManager.getModel('person');
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:
<%
response.getWriter().write("{name:'hello',age:26,email:'word@qq.com'}");
%>
阅读(2941) | 评论(0) | 转发(0) |