Extjs 学习ing

news/2024/7/7 23:06:12

启用Ext.Loader

(function(){
	Ext.Loader.setConfig({
		enabled:true
	});
	ext.onReady(function(){
   
	
	})

})();
创建数据模型对象 model

// Model定义为字段、任意方法和与模型相关的属性的集合( 如 validations 验证器等)

//define   创建
Ext.define('student',{
	extend:'Ext.data.Model',
	fields:[
		{name:'studentName',type:'string'},
		{name:'class',type:'auto'},
		{name:'address',type:'string'}
	]
});
//  regModel   创建
Ext.regModel('student'{
	fields:[
		{name:'studentName',type:'string'},
		{name:'class',type:'auto'},
		{name:'address',type:'string'}
	]
})
//  define 和regModel regModel 不需要配extend   属性,  regModel 继承le Ext.data.Model类
实例化对象
//1、new  关键字
var obj=new student({
	name:'张三',
	class:'初一',
	address:'xxxxx'
})
//2、Ext.create 方法创建,extjs4.0  推荐的对象创建方法
var obj=Ext.create('student',{
    name:'张三',
	class:'初一',
	address:'xxxxx'
})
//3、Ext.ModelManager.create 方法创建   别名    Ext.ModelMgr.create
var p=Ext.ModelMgr.create({
	name:'张三',
	class:'初一',
	address:'xxxxx'
},'student')
Ext.data.Store

Store类封装了一个客户端缓存,用于存储 Model 对象. Stores 通过一个代理 Proxy 来加载数据, 并提供函数来 排序, 过滤 以及查询 内部所包含的 model 实例. 创建Store非常简单 - 我们只需要传入 Model 以及用来加载/保存 数据的Proxy作为配置项即可:

 // 建立一个store要使用的 model
 Ext.define('User', {
     extend: 'Ext.data.Model',
     fields: [
         {name: 'firstName', type: 'string'},
         {name: 'lastName',  type: 'string'},
         {name: 'age',       type: 'int'},
         {name: 'eyeColor',  type: 'string'}
     ]
 });
 
 var myStore = Ext.create('Ext.data.Store', {
     model: 'User',
     proxy: {
         type: 'ajax',
         url: '/users.json',
         reader: {
             type: 'json',
             root: 'users'
         }
     },
     autoLoad: true
 });

(2)内联数据
Store 也可以加载内部指定的数据. 在内部, Store 将我们传入的对象作为data,转换为Model实例。 示例如下:
Ext.create(‘Ext.data.Store’, {
model: ‘User’,
data : [
{firstName: ‘Ed’, lastName: ‘Spencer’},
{firstName: ‘Tommy’, lastName: ‘Maintz’},
{firstName: ‘Aaron’, lastName: ‘Conran’},
{firstName: ‘Jamie’, lastName: ‘Avins’}
]
});
(3)过滤与排序
Store 可以进行排序和过滤 - 两种操作既可以在本地执行,也可以远程执行. 排序 sorters 和 过滤 filters 都是在 MixedCollection 实例内部执行的, 这种封装使得容易管理和使用. 通常在 Store的配置项中指定 sorters 和 filters 就可以了,当然也可以调用 sort 和 filter 方法:
var store = Ext.create(‘Ext.data.Store’, {
model: ‘User’,
sorters: [{
property: ‘age’,
direction: ‘DESC’
}, {
property: ‘firstName’,
direction: ‘ASC’
}],

 // 必须包含字母E或者d
 filters: [{
     property: 'firstName',
     value: /Ed/
 }]

});

代理 Proxy
(function(){
	Ext.onReady(function(){
		Ext.regModel("user",{
			fields:[
				{name:'name',type:'string'},
				{name:'age',type:'int'}
			],
			proxy:{
				type:'ajax',//ajax  代理
				url:'users.xml',
				//阅读器  类型xml样式
				reader:{
					type:'xml',
					record:'user'//主要数据
				}
		
			}
      
		});
		//模型管理器 ModelManager
		var user=Ext.ModelManager.getModel('user');
		user.load(1,{
			success:function(model){
				alert(model);
				alert(model.get('name'))
			}
		})
		
	
	})
})();
//  代理  的  写入器

Ext.onReady(function(){
	fields:[
		{name:'name'},
		{name:'age'}
	],
   //  如果没有标明field具体类型等情况可以简写如下
   //   fields:['name','age']
   proxy:{
		type:'ajax',
		url:'person.jsp',
		//代理写
		write:{
			type:'json',
			//type:'xml'
		}
	}

});
Ext.ModelMgr.create({name:'Ares',age:10},'person').save();
用Ext.data.proxy.Ajax对象实现ajax
Ext.onReady(function(){
	
	//模型类 , 相当于class
	Ext.define("person",{
		extend:"Ext.data.Model",
		fields:[
		        {name:'name',type:'string'},
		        {name:'age',type:'int'}
		 ]
	});
	
	//==>代理对象 , 用对象的 doRequest()方法获取数据
	var ajaxProxyObj = Ext.create("Ext.data.proxy.Ajax",{
		url : "fakeData.jsp",
		model : "person",
		reader : "json",
		limitParam : "indexParm" //参数未修改前默认叫"limit" , 通过这类描述可以修改字段名称
	});
	//拿到回应中的字串( 没decode解码), 和转成原生Js对象
	ajaxProxyObj.doRequest( new Ext.data.Operation({
					action:"read",//读方式
					//后台能拿到其余参数的json对象, 再做处理 最终再返回前台
					limit:3,//分页数据
					start:1,
					sorters:[ //排序数组 Ext.util.Sorter
					         {
					        	 property:"name",
					        	 direction:"ASC"
					         },{
					        	 property:"age",
					        	 direction:"ASC"
					         }
					 ]
					//还可以实现过滤器, 分组
			}) , function(obj){
					alert(obj);//chrome的F12调试工具 Sources , 右侧Scope Variables
					var txt = obj.response.responseText;拿到回应中的字串( 没decode解码)
					alert( Ext.JSON.decode(txt)['name'] );//解码成一个对象(但是不是model,仅是原生Js对象)
	});
	
});
用localstorage代理 , 代替cookies
Ext.onReady(function(){
	
	//模型类 , 相当于class
	Ext.define("person",{
		extend:"Ext.data.Model",
		
		fields:[
		        {name:'name',type:'string'},
		        {name:'age',type:'int'}
		 ],
		 //==>代理类 , 用Model类的load()方法获取数据
		 proxy:{
			 type:"localstorage"//,本地存储 , 目的是代替cookies不怕禁用cookies  .  
			//model: 配置可以省略, 因为就在本model之中
			
			//用 type:"ajax"的话需要配置 url:"fakeData.jsp"	
			// type:"sessionstorage"	 相当于session 关闭浏览器后会被删除
			 //id:"twitter-Searches"
		 }
 
	})
	
	//==>model的集合是store
	var store = Ext.create("Ext.data.Store",{
		model:person
	});
	//添加一条
	store.add({name:"store添加的", age:7 });
	//异步保存
	store.sync();
	//取出展示
	store.load();
	var msgArray = [];
	store.each( function(v){
		msgArray.push( v.get('name') + "__" + v.get('age'));
	});
	alert(msgArray.join("\n"));
	
	var p = Ext.ModelMgr.getModel( "person" );//传入名字
	p.load( null , {
		scope:this,
		failure:function(record , operation)
		{
			alert(record);
		},
		success: function(record , operation)
		{
			alert(record.data.name);
		},
		callback:function(record , operation)
		{
		}
		
	});
	
});

store ,proxy

(function(){
	Ext.Loader.setConfig({
		enabled:ture
	});
	Ext.onReady(function(){
	//-------------------------------------
		Ext.define("person",{
			extend:'Ext.data.Model',
			fields:[
				{name:'name'},
				{name:'age'}
			],
			proxy:{
				type:'memory'
			}
		})
   //-------------------------------------
    var s=new Ext.data.Store({
    //  如果store中有fields,则会自动生成对应的Model模型
			fields:[
				{name:'name'},
				{name:'age'}
			],
			//------------------------------------
			data:[
				{name:'AresWang',age:10},
				{name:'AresZen',age:20}
			],
			//------------------------------------
			proxy:{
				type:'ajax',
				url:'person.js'
			},
			//model:'person',  如果 store里有fields,则就不需要配置model
			//autoload:ture    如果 是ajax代理, 则就不需要配置autoload  
		})  ;  
		s.each(function(model){
			alert(model.get('name'));
		});
		s.load(function(records, operation, success) {
			Ext.Array.each(records,function(model){
					alert(model.get('name'));
				});
   			 console.log('loaded records');
		});
	});








})();

http://lihuaxi.xjx100.cn/news/1165475.html

相关文章

VMware是什么?VMware虚拟机最新安装教程

VMware Workstation是一款虚拟机软件,允许用户将Linux、Windows等多个操作系统作为虚拟机在单台PC上运行; 用户可以在虚拟机上重现服务器、桌面和平板电脑环境,无需重新启动即可跨不同操作系统同时运行应用。 通过对个人笔记本(PC)硬件资源的虚拟&#…

怎么把录音转文字?推荐你这三款工具

随着科技不断发展,录音转文字的技术也逐渐被广泛应用于各种场景中。其中最常见的一种就是会议记录。在日常工作中,会议是企业和组织中必不可少的一个环节,但在会议过程中的录音和记录往往需要花费大量的时间和精力。这个时候,我们…

Three.js教程:点、线、网格模型介绍

推荐:将 NSDT场景编辑器 加入你的3D工具链 其他系列工具: NSDT简石数字孪生 点、线、网格模型介绍 经过前面几章学习相信你对点模型Points、线模型Line、网格模型Mesh已经有了大致了解,本节课就对点、线、网格模型模型进行简单总结。 点模型…

day4 - 使用图像绘制动态时钟

本期的主要内容是利用OpenCV中包含的绘图函数,例如绘制线段、绘制矩形、绘制圆形等来绘制一个动态时钟的表盘。 完成本期内容,你可以: 掌握OpenCV常见的绘图函数 学会使用绘图函数绘制简单的图像 若要运行案例代码,你需要有&a…

中间件(三)- Kafka(二)

Kafka 6. 高效读写&Zookeeper作用6.1 Kafka的高效读写6.2 Kafka中zookeeper的作用 7. 事务7.1 Producer事务7.2 Consumer事务 8. API生产者流程9. 通过python调用kafka9.1 安装插件9.2 生产者(Producer)与消费者(Consumer)9.3…

面试都不会造火箭,还想拿20k,过于离谱

前段时间公司缺人,也面了许多测试,一开始瞄准的就是中级水准,当然也没指望能来大牛,提供的薪资在15-20k这个范围,来面试的人有很多,但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…

新用户如何选择WMS仓储管理系统解决方案

引言:随着现代化物流技术的不断发展,WMS仓储管理系统已成为企业管理的重要工具。一款合适的WMS系统可以帮助企业提高库存管理效率、减少库存成本、提升物流服务质量。对于初学者来说,如何选择适合自己的WMS系统,往往是一项挑战。本…

【挑战自己】软件测试的7个级别,做到3级已经超越80%测试人

有人说:软件测试就是最low的点点点工作。 有人说:测试工作职位薪水到一定程度只能原地踏步无法提升 也有人说:测试行业相对于开发来说技术性很低,容易被取代。 这其实是对测试行业最大的误解。测试可深可浅,可窄可广…