您的位置:首页 > Web前端 > JavaScript

extjs4学习日志(2)数据模型中的model

2012-05-26 15:08 393 查看
今天继续学习extjs4,今天主要学习extjs的数据模型结构主要包括model、proxy和store,分别代表模型、代理、数据集

1、 创建model

model的创建过程就相当于数据库中的设计table的过程和C#中的class的定义过程

两种方法:

a) Ext.define():自定义一个类并继承自Ext.data.Model类

//方法1:使用Ext.define创建model类
Ext.define('person', {
extend: 'Ext.data.Model',   //继承自model类
fields: [                   //相当于table中的字段,class中的属性
{ name: 'name', type: 'auto' },
{ name: 'age', type: 'int' },
{ name: 'email', type: 'auto' }
]
});


b) Ext.regModel():直接定义一个类,返回的就是model类

//方法2:使用Ext.regModel来创建model类,可以不写继承自model类,本身就返回一个model
Ext.regModel('user', {
fields: [
{ name: 'name', type: 'auto' },
{ name: 'age', type: 'int' },
{ name: 'email', type: 'auto' }
]
});


2、 实例化model类

a) new关键字

//方法1:new关键字
var p = new person({
name: '张三',
age: 26,
email: 'zs@163.com'
});

Ext.Msg.alert('提示', '姓名:' + p.get('name') + ' 年龄:' + p.get('age') + ' 邮箱:' + p.get('email'));


  获取model中的字段可以用对象.get(字段名)来获得。

  b) Ext.create()

//方法2:Ext.create()(推荐)
var p1= Ext.create('person', {
name: '李四',
age: 30,
email: 'ls@163.com'
});

alert('姓名:' + p1.get('name') + ' 年龄:' + p1.get('age') + ' 邮箱:' + p1.get('email'));


  c) Ext.ModelManager.create()

//方法3:Ext.ModelManager.create()可以简写成Ext.Mgr.create()
var p2 = Ext.ModelMgr.create({
name: '王五',
age: 35,
email: 'ww@163.com'
}, 'person');

alert('姓名:' + p2.get('name') + ' 年龄:' + p2.get('age') + ' 邮箱:' + p2.get('email'));


4、 验证器validations

  就是对model的对象的各个字段(属性)进行验证的机制

//扩展验证机制
Ext.apply(Ext.data.validations, {
age: function (config, value) {
var min = config.min;
var max = config.max;
if (value >= min && value <= max) {
return true;
}
else {
return false;
}
},
ageMessage: '年龄数据出现错误!'
});

//定义名为person的model
Ext.regModel('person', {
fields: [
{ name: 'name', type: 'auto' },
{ name: 'age', type: 'int' },
{ name: 'email', type: 'auto' }
],
//验证器
validations: [
//验证类型:长度验证  验证字段:name 长度大于等于2小于等于6
{type: 'length', field: 'name', min: 2, max: 6 },
//验证年龄必须在0到100之间
{ type: 'age', field: 'age', min: 0, max: 100 }
]
});

var p = Ext.create('person', {
name: '王',
age: -9,
email: 'ls@163.com'
});

var errors = p.validate();

errors.each(function (msg) {
alert('字段:' + msg.field + '\n发生错误:' + msg.message);
})


运行结果将会输入错误信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: