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. ubuntu错误解决E: Sub-process /usr/bin/dpkg returned an error code (1)

    在用apt-get安装软件时出现了类似于 install-info: No dir file specified; try –help for more information.dpkg:处理 get ...

  2. Linux程序存储结构与进程结构 堆和栈的差别

    摘要:本文主要讲述了Linux系统中.程序存储结构(代码区.数据段和BBS区)与进程的基本结构(代码区.数据段.BBS区.堆和栈).以及堆和栈的差别. Linux程序存储结构与进程结构 1.Linux ...

  3. 使用js+Ajax请求API接口数据-带请求头方式

    C# http请求带请求头部分 先上代码: <script type="text/javascript"> function zLoginCheck() { var A ...

  4. Android Touch事件传递机制引发的血案

    尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38942135 关于Android Touch事件传递机制我之前也写过两篇文章,自觉得对Tou ...

  5. SpringMVC 异常记录

    在使用SpringMVC中开发过程中,遇到的一些坑,简单记录一下. 1.The request sent by the client was syntactically incorrect 从字面意思 ...

  6. 一些制作app的软件

    搜狐快站 http://www.kuaizhan.com/百度siteapp http://siteapp.baidu.com/腾讯风铃 http://fl.qq.com/

  7. Git使用总结 Asp.net生命周期与Http协议 托管代码与非托管代码的区别 通过IEnumerable接口遍历数据 依赖注入与控制反转 C#多线程——优先级 AutoFac容器初步 C#特性详解 C#特性详解 WPF 可触摸移动的ScrollViewer控件 .NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用

    一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的 ...

  8. LinkedList的一种错误使用方法

    近期在做图像处理的时候.发现某一段代码很的慢.慢得让人无法接受.基本的代码是顺序訪问一个LinkedList的元素,效果是随着index的变大,速度越来越慢,list的元素个数在百万以上.找到原因,分 ...

  9. zookeeper(三):java操作zookeeper

    引入jar包 首先要使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper-3.4.5.jar 和 ...

  10. 【Android界面实现】View Animation 使用介绍

        转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992     我们能够使用view animation 动画系统来给View控件加入tween动画(下称& ...