02extjs的数据模型

day02
数据模型
数据模型三大部分:model proxy store
1、普通Model的创建
数据模型对真实世界中对事物在系统中的反应
extjs4.0中的mode相当于DB中的table或java中的Class
(function(){
	Ext.onReady(function(){
		//利用Ext.define来创建模型类(方法一)
		//DB table person(name,age,email)
		Ext.define("person",{
			extend:"Ext.data.Model",
			fields:[
				{name:'name',type:'auto'},
				{name:'age',type:'int'},
				{name:'email',type:'auto'}
			]
		});




2、利用Ext.regModel创建模型
		//MVC模式中model一定是M层(方法二)
		Ext.regModel("user",{
			fields:[
				{name:'name',type:'auto'},
				{name:'age',type:'int'},
				{name:'email',type:'auto'}
			]
		});




3、创建model的实例 实例化对象的方法
		//实例化person类
		//1.new关键字
		var p = new person({
			name:'cat',
			age:26,
			email:'cat@163.com'
		});
		alert(p.get('name'));
		/**若加载报错:ext is not define,可能原因是引用类库的路径书写不正确*/
		
		//2.create关键字
		var p1 = Ext.create("person",{
			name:'cat',
			age:26,
			email:'cat@163.com'
		});


		//3.ModelMgr关键字
		var p2 = Ext.ModelMgr.create({
			name:'cat',
			age:26,
			email:'cat@163.com'
		},'person');
	});
})();




4、Validatiions
(function(){
	Ext.data.validations.lengthMessage = "错误的长度";//汉化
	Ext.onReady(function(){
		/**5、自定义验证器*/
		/**扩展
			Ext.apply(Ext.data.validations,{
				age:function(config,value){
					var min = config.min;
					var max = config.max;
					if(min <= value && value <= max){
						return true;
					}else{
						this.ageMessage = this.ageMessage+"数值应该在["+min+"~"+max+"]";
						return false;
					}
				},
				ageMessage:'age数据出现了错误'
			});
		*/
		Ext.define("person",{
			extend:"Ext.data.Model",
			fields:[
				{name:'name',type:'auto'},
				{name:'age',type:'int'},
				{name:'email',type:'auto'}
			],
			validations:[
				{type:"length",field:"name",min:2,max:6}	
				/**
				{type:'age',field:'age',min:0,max:150}*/
			]
		});


		var p1 = Ext.create("person",{
			name:'cat',
			age:25,
			email:'cat@163.com'
		});
		var errors = p1.validate();
		var errorInfo = [];
		errors.each(function(v){
			errorInfo.push(v.field+"  "+v.message);
		});
		alert(errorInfo.join("\n"));
	});
})();




6、简单数据代理,详细的代理proxy以后讲
	//proxy就是完成数据的CRUD(增删改查)的代理对象
	proxy.js文件
	(function(){
		Ext.onReady(function(){
			Ext.define("person",{//指明代理谁
				extend:"Ext.data.Model",
				fields:[
					{name:'name',type:'auto'},
					{name:'age',type:'int'},
					{name:'email',type:'auto'}	
				],
				proxy:{//数据代理
					type:'ajax',//指明代理方法
					url:'person.jsp'//指明代理地址?
				}
				//此时没有请求jsp,证明代理在类的创建时不会请求数据资源
			});
			var p = Ext.ModelManager.getModel("person");
			//此时是获取代理类,不用create
			//此时p没有数据,用load从jsp中加载数据
			p.load(1,{//这里的1是数据id
				scope:this,
				failure:function(record,operation){
				},
				success:function(record,operation){
					alert(record.data.name);
				},
				callback:function(record,operation){
				}
			});
		});
	})();


	person.jsp文件
	<%@page language="java" contentType="text/html" pageEncoding="utf-8"%>
	<%
		System.out.print(request.getParameter("id"));
		response.getWriter().write("{name:'cat',age:26,email:'cat@126.com'}");
	%>




7、Model的一对多和多对一(先简单了解)
	(function(){
		Ext.onReady(function(){
			//老师类
			Ext.regModel("teacher",{
				fields:[
					{name:'teacherId',type:'int'},
					{name:'name',type:'auto'}
				],
				hasMany:{
					model:'student',
					name:'getStudent',
					filterProperty:'teacher_Id'
				}
			});
			//学生类
			Ext.regModel("student",{
				fields:[
					{name:'studentId',type:'int'},
					{name:'name',type:'auto'},
					{name:'teacher_Id',type:'int'}
				]
			});
			//t.students 得到子类的一个store数据集合
		});
	})();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值