ExtJs4学习(六)MVC中的Model
Model定义的两种方式
第一种
Ext.define("User",{
extend:"Ext.data.Model",
fields:[{
name:'username',
type:'string'
},{
name:'password',
type:'string'
}]
});
另外一种
Ext.regModel("User",{
fields:[{
name:'username',
type:'auto'
},{
name:'password',
type:'auto'
}]
});
怎样实例化?
首先我们尝试最主要的方式 new
var user = new User({username:'somnus',password:'123456'});
console.info(user.get('password'));//123456
然后用create方式
var user = Ext.create('User'{username:'somnus',password:'123456'});
console.info(user.get('password'));//123456
extjs4还给model单独提供了一种对象创建方式
var user = Ext.ModelManager.create({username:'dream5',password:'123456'},"User");
怎样远程载入数据到model
Ext.regModel('User', {
fields : [
{name : 'name',type : 'string'},
{name : 'id',type : 'int'}
],
proxy : {
type : 'ajax',
url : 'userServer.jsp'
}
});
var user = Ext.ModelManager.getModel('User');
user.load(1,{
success:function(rec){
console.log(rec.get('username'));
}
});
怎样校验model中的数据
Ext.define("User",{
extend:"Ext.data.Model",
fields:[{
name:'username',
type:'string'
},{
name:'password',
type:'string'
}],
validations:[{
type:'length',field:'username',min:2,max:10
},{
type:'number',field:'password',min:6,max:20
}]
});
var user = Ext.create('User'{username:'somnus',password:'123456'});
var errors = user.validate();
这里不得不提下我在密码那里新增了一个长度验证,那怎样自己定义呢?且看
//自己定义数值范围验证
Ext.apply(Ext.data.validations,{
number : function(config, value){
if (value === undefined){
return false;
}
var min = config.min;
var max = config.max; if ((min && value < min) || (max && value > max)){
this.numberMessage = this.numberMessage+"它应该在["+min+"-"+max+"]";
return false;
} else{
return true;
}
},
numberMessage : '数值范围错误。'
});
Model之间是怎样关联的
我们在hibernate中已经认识到,对象之间是能够关联的,extjs在这里也实现了
Ext.regModel('User', {
fields : ['name','id'],
hasMany : {
model : 'Product',
name : 'getProducts',
autoLoad : false
},
proxy : {
type : 'ajax',
url : 'userServer.jsp'
}
});
Ext.regModel('Product', {
fields : ['id','title','user_id'],
proxy : {
type : 'ajax',
url : 'ProductServer.jsp',
reader : {
type : 'json',
root : 'products'
}
}
});
var user = Ext.ModelManager.getModel('User');
// 读取id为1的User实例
user.load(1, {
success : function(rec) {
// 获取user_id为1的产品Store
var products = rec.getProducts();
// 载入user_id为1的产品数据
products.load({
callback : function(records, operation, success) {
Ext.each(records,function(record){
console.info(record.get('title'));
})
}
});
}
});
Extjs4还提供了一种配置方式
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id'],
associations: [
{type: 'hasMany', model: 'Product', name: 'getProducts'}
]
});
上面我给的样例是一对多,一对一肯定也是存在的,翻看api
hasOne
belongsTo
ExtJs4学习(六)MVC中的Model的更多相关文章
- asp.net MVC中的@model与Model
asp.net MVC中的@model与Model https://blog.csdn.net/ydm19891101/article/details/44301201 在MVC的实际使用中,我们经常 ...
- ASP.NET Core MVC 中的 Model 模型
ASP.NET Core MVC 中的 Model 我们希望最终从 Student 数据库表中查询特定的学生详细信息并显示在网页上,如下所示. MVC 中的模型包含一组表示数据的类和管理该数据的逻辑. ...
- ASP.NET MVC中默认Model Binder绑定Action参数为List、Dictionary等集合的实例
在实际的ASP.NET mvc项目开发中,有时会遇到一个参数是一个List.Dictionary等集合类型的情况,默认的情况ASP.NET MVC框架是怎么为我们绑定ASP.NET MVC的Actio ...
- ASP.NET MVC中对Model进行分步验证的解决方法
原文:ASP.NET MVC中对Model进行分步验证的解决方法 在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用户的注册分成了四步,而这四个步骤都是在完善一个 ...
- MVC 中的Model对象
最近实在是太忙,客户丢了一个框架,没有任何说明文档,更没有所谓的技术支持,一直忙于学习,最后好歹还有点头绪,话不多说,MVC的学习是不能拉下的,就当前小白的我,认为MVC中的M并不是想象中的那样简单, ...
- 关于MVC中模型model的验证问题
今天在做项目练习的时候发现,MVC中使用自带的模型验证时会提前显示在界面上,比如下面所示: 这是什么原因了,是因为我在表示get请求的action里面返回了其界面所显示使用的model,我们知道mvc ...
- PHP MVC 中的MODEL层
Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封 三.实现你的Mode层 Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封,进行他的设计的时候设计到三个 ...
- Mvc 中ViewBag Model 查找不到解决
按照晚上修改VIew视图中web.config 很显然,没效果... 我的情况是 出现: 我想了下 看下是不是编译器的问题: 我在vs2013中建立 MVC4 然后用 vs2015打开 然后报错- ...
- 多线程编程学习六(Java 中的阻塞队列).
介绍 阻塞队列(BlockingQueue)是指当队列满时,队列会阻塞插入元素的线程,直到队列不满:当队列空时,队列会阻塞获得元素的线程,直到队列变非空.阻塞队列就是生产者用来存放元素.消费者用来获取 ...
随机推荐
- hibernate list和iterate
list方法会一次查出所有内容,放在list里和缓存中.再次查询同一内容仍然会去数据库重新查一遍,并刷新缓存. iterate方法会一次查出所有内容的ID,等用到某个ID对应的内容时又会去根据主键查询 ...
- Wireshark-配合tcpdump对Android(安卓)手机抓包
环境:Windows, 安装真机(可以获取Root权限), adb, Wireshark, tcpdump 原理: 使用 tcpdump 进行抓包, 然后用 Wireshark 进行分析 1.获取手机 ...
- LaTeX数学公式输入
[置顶 Tips ] 在 WinEdt 中快速添加公式字符而不必手动打出一个个letters~: 即会出现如下 GUI Page Control : ------------------------- ...
- SQL Server Profiler 跟踪sql小技巧
使用Profile监控sql时候经常会有很多很多的sql,想查询那条是自己的sql很困难,但是连接字串有个参数可以解决这个问题这个参数是Application Name例如说 我们在需要的数据库连接中 ...
- C#Project不生成.vhost.exe和.pdb文件的方法
编译C#工程时,在C#的Project的属性界面的Build选项卡中当Configuration : Relese 时,依然会生成扩展名为.vhost.exe和.pdb文件. 其中.pdb是debug ...
- unity, 在surface shader中访问顶点色
//ref: Custom data computed per-vertex: http://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html ...
- TypeScript 入门指南
你是否听过 TypeScript? TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行.TypeS ...
- file's owner以及outlet与连线的理解
转自:http://www.cnblogs.com/martin1009/archive/2012/06/01/2531028.html xib文件本身可以看做是一个xml,app启动的时候会根据xm ...
- poll?transport=longpoll&connection...连接的作用
在浏览器中打开使用VS2013开发的项目时,按F12使用浏览器调试,会发现一堆无关的请求,结构大致是:poll?transport=longpoll&connection.....一直不停的请 ...
- 初识md5碰撞与crc32碰撞
现在是晚上23:29.写这篇文章呢,是因为早些时候我胃疼,是因为凉导致的胃疼.凉呢喝了一些热水,喝完热水胃倒是不疼了,但是由于我喝的是茶叶开水,于是就导致失眠了.想来想去这漫漫长夜也没意思,于是就决定 ...