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)是指当队列满时,队列会阻塞插入元素的线程,直到队列不满:当队列空时,队列会阻塞获得元素的线程,直到队列变非空.阻塞队列就是生产者用来存放元素.消费者用来获取 ...
随机推荐
- Odoo8.0安装wkhtmltopdf报表运行环境
#下载 #注意根据操作系统选择相应版本 (旧地址)wget http://sourceforge.net/projects/wkhtmltopdf/files/0.12.1/wkhtmltox ...
- Unity 逻辑层通知UI 通过接口消除他们通信的switch判断
需求如何: 用户名字长度为2-12之间, 如果错误在界面上弹出一个消息框 写烂一点 public void PostRename(string name) { if (string.IsNullO ...
- 10-hibernate单表操作-组件属性
组件属性: 实体类中某个属性属于用户自定义的类的对象,比如在实体类中某个属性是自定义类的对象: 这个Address是一个用户自定义类. 该自定义类Address定义如下: //地址类 public c ...
- python处理xls、xlsx格式excle
一.windows下读取xls格式文件,所需模块xlrd.xlw 1.下载安装包 xlrd地址:https://pypi.org/project/xlrd/#files xlwt地址:https:// ...
- Qt for Android 开发大坑
Qt for Android 开发大坑 作者: qyvlik Qt 5.5.1 这里说一说比較常见的 Qt 开发安卓的大坑. 希望同学们不要做无谓的挣扎,跳过这些坑. 输入框 首当其冲的是输入框,Qt ...
- init: cannot execve(‘XXX’):Permission denied问题
近期在给android 4.3系统进行root时候,一直出现例如以下的红色权限问题 : 7.695741] Freeing init memory: 236K [ 8.555286] ini ...
- java分页功能代码
import java.util.ArrayList; import java.util.List; /** * * @author cheney * * @date Aug 31, 2012 */ ...
- C# 取时间段年、月、日、季度
DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32( ...
- 【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服 ...
- C# DateTime 时间格式
//2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString(& ...