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
时间: 2024-10-08 01:08:19

ExtJs4学习(六)MVC中的Model的相关文章

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

原文:ASP.NET MVC中对Model进行分步验证的解决方法 在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用户的注册分成了四步,而这四个步骤都是在完善一个Model的信息,但是又分页面填写信息的,当时我加上ModelState.IsValid这句验证代码的时候,根本没法通过验证,因为在注册的前面三步,注册用户的Model信息都没填写完整,而ModelState.IsValid是对一个实体的所有属性进行判断验证的.当时很纠结,因为刚接触Asp.net

PHP MVC 中的MODEL层

Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封 三.实现你的Mode层 Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封,进行他的设计的时候设计到三个个概念:------Model类.是实体类.用来保存数据库表格的中一条记录的所有字段的数据.并且可以验证这条记录数据的完整性.------ModelManager类. 是实体类的管理类.通常每一个实体类(Model)都要有一个对应的管理类(ModelManager).管理类可以用来管理实体类里面的数

Mvc 中ViewBag Model 查找不到解决

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

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

介绍 阻塞队列(BlockingQueue)是指当队列满时,队列会阻塞插入元素的线程,直到队列不满:当队列空时,队列会阻塞获得元素的线程,直到队列变非空.阻塞队列就是生产者用来存放元素.消费者用来获取元素的容器. 当线程 插入/获取 动作由于队列 满/空 阻塞后,队列也提供了一些机制去处理,或抛出异常,或返回特殊值,或者线程一直等待... 方法/处理方式 抛出异常 返回特殊值 一直阻塞 超时退出 插入方法 add(e) offer(e) put(e) offer(e, timeout, unit

mvc中动态给一个Model类的属性设置验证

原文:mvc中动态给一个Model类的属性设置验证 在mvc中有自带的验证机制,比如如果某个字段的类型是数字或者日期,那么用户在输入汉字或者英文字符时,那么编译器会自动验证并提示用户格式不正确,不过这样的验证毕竟功能有限,那么就需要我们自己进行定制验证. 假设有Model类:class Dinners{ private string Title; private System.DateTime EventDate; private string Description; private stri

在MVC中实现和网站不同服务器的批量文件下载以及NOPI下载数据到Excel的简单学习

嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣扎啦,不知道从哪下手,而且自己针对一个文件下载的小小练习还是写过的,但是和项目中的下载完全就是两个世界,所以我只能抱着学习的心情查找资料啦,刚开始由于leader没有说怎么个下载的办法,我只能自己看些有关下载的资料啦,周一只是在猜测的学习,然后通过询问各路大神.就新学习了NOPI,当我看到Nopi下

MVC中@Html.DisPlayFor(model=&gt;model.newsName)和 @Model.newsName的区别

MVC中,在Controllers查询到数据,返回一个实体给View并显示,可以用@Html.DisPlayFor(model=>model.newsName)和 @Model.newsName这两种方式显示某个字段数据(如newsName),但是,这两者是用区别的,即如果Controllers中没有查询到数据,则会返回一个值为null的实体(当然你可以进行判断,不返回null到view中),用 @Model.newsName这种方式显示的话会报错.下面我就用一个实例来演示一下: Control

在.Net MVC中自定义ValidationAttribute标签对Model中的属性做验证

写一个继承与ValidationAttribute类的自定义的验证方法 MVC中传递数据时,大多数都会用Model承载数据,并且在传到控制器后,对Model进行一系列的验证. 我平时经常使用的判断方法比Low,因为Model都是不同的,也需要返回很多不同的信息,所以我都是把很多条件语句封装成私有方法,放在控制器的最下边,然后使用的时候直接调用. 下图就是我平时使用的代码格式,我把验证方法都写在了这里,很低级请轻喷. 其实在.Net MVC中,已经提供了很好的验证方法,就是在属性上面加Valida

MVC中Model BLL层Model模型互转

MVC中Model BLL层Model模型互转 一. 模型通常可以做2种:充血模型和失血模型,一般做法是模型就是模型,不具备方法来操作,只具有属性,这种叫做失血模型(可能不准确):具备对模型一定的简单操作方法,不只是有属性的模型叫做充血模型,如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcApplication1.Models { /// <