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的更多相关文章

  1. asp.net MVC中的@model与Model

    asp.net MVC中的@model与Model https://blog.csdn.net/ydm19891101/article/details/44301201 在MVC的实际使用中,我们经常 ...

  2. ASP.NET Core MVC 中的 Model 模型

    ASP.NET Core MVC 中的 Model 我们希望最终从 Student 数据库表中查询特定的学生详细信息并显示在网页上,如下所示. MVC 中的模型包含一组表示数据的类和管理该数据的逻辑. ...

  3. ASP.NET MVC中默认Model Binder绑定Action参数为List、Dictionary等集合的实例

    在实际的ASP.NET mvc项目开发中,有时会遇到一个参数是一个List.Dictionary等集合类型的情况,默认的情况ASP.NET MVC框架是怎么为我们绑定ASP.NET MVC的Actio ...

  4. ASP.NET MVC中对Model进行分步验证的解决方法

    原文:ASP.NET MVC中对Model进行分步验证的解决方法 在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用户的注册分成了四步,而这四个步骤都是在完善一个 ...

  5. MVC 中的Model对象

    最近实在是太忙,客户丢了一个框架,没有任何说明文档,更没有所谓的技术支持,一直忙于学习,最后好歹还有点头绪,话不多说,MVC的学习是不能拉下的,就当前小白的我,认为MVC中的M并不是想象中的那样简单, ...

  6. 关于MVC中模型model的验证问题

    今天在做项目练习的时候发现,MVC中使用自带的模型验证时会提前显示在界面上,比如下面所示: 这是什么原因了,是因为我在表示get请求的action里面返回了其界面所显示使用的model,我们知道mvc ...

  7. PHP MVC 中的MODEL层

    Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封 三.实现你的Mode层 Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封,进行他的设计的时候设计到三个 ...

  8. Mvc 中ViewBag Model 查找不到解决

    按照晚上修改VIew视图中web.config 很显然,没效果... 我的情况是 出现: 我想了下  看下是不是编译器的问题: 我在vs2013中建立 MVC4  然后用 vs2015打开 然后报错- ...

  9. 多线程编程学习六(Java 中的阻塞队列).

    介绍 阻塞队列(BlockingQueue)是指当队列满时,队列会阻塞插入元素的线程,直到队列不满:当队列空时,队列会阻塞获得元素的线程,直到队列变非空.阻塞队列就是生产者用来存放元素.消费者用来获取 ...

随机推荐

  1. Java 线程池的原理与实现 (转)

        最近在学习线程池.内存控制等关于提高程序运行性能方面的编程技术,在网上看到有一哥们写得不错,故和大家一起分享. [分享]Java 线程池的原理与实现 这几天主要是狂看源程序,在弥补了一些以前知 ...

  2. 使用jq Deferred防止代码被回调函数分解分解的支离破碎

    //移动人物 function moveInterval(stopPosotion){ var dtd = $.Deferred(); // 生成Deferred对象 var yidong= wind ...

  3. 转:数据库的快照隔离级别(Snapshot Isolation)

    数据库的快照隔离级别(Snapshot Isolation)   隔离级别定义事务处理数据读取操作的隔离程度,在SQL Server中,隔离级别只会影响读操作申请的共享锁(Shared Lock),而 ...

  4. JS正则表达式(转载)

    在JavaScript中,RegExp对象表示正则表达式,用来对字符串进行匹配. 一.两种定义方法: 1.直接量法: /pattern/attribute 2.对象法: new RegExp(patt ...

  5. SharePoint专家新闻轮转器WebPart----亲測力推之Web部件

    SharePoint专家新闻轮转器WebPart----亲測力推之Web部件 项目截图: 注意: 专家新闻轮转器还在測试阶段.期待大家讨论和跟踪问题. 项目描写叙述: 专家新闻轮转器是一个ShareP ...

  6. 详解Struts1中的struts-config.xml配置文件【一】

    搞清楚struts-config.xml中各项元素的作用,对于我们构建web项目有莫大的好处.<struts-config>是struts的根元素,它主要有8个子元素,DTD定义如下: & ...

  7. linux文本分析利器awk

    转 快速理解linux文本分析利器awk 原文链接 杜亦舒 性能与架构 awk是什么 如果工作中需要操作linux比较多,那么awk是非常值得学习的 awk是一个极其强大的文本分析工具,把文件逐行的读 ...

  8. C 语言 ioctl

    /* *@author cody *@date 2014-08-12 *@description */ /* #include <sys/ioctl.h> send control and ...

  9. SS不能在Win7中打开,出现停止运行

    一次,在Win7上不能打开SS,经过搜索,好像SS的win客户端使用.net frame4.6.2开发,但是Win7根本安装不了该版本的.net,所以...,重新安装Win10.

  10. Java - NIO基础

    1. 概述 现在使用NIO的场景越来越多,很多技术框架都使用NIO技术,比如Tomcat,Jetty,Netty等. 传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer进行操 ...