`
xiaolongheni
  • 浏览: 19902 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

EXT4学习笔记

    博客分类:
  • EXT
ext 
阅读更多

Ext3.0引入三个文件

<script type="text/javascript" src="${ctxPath}/framework/scripts/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="${ctxPath}/framework/scripts/ext/ext-all.js"></script>
<link rel="stylesheet" type="text/css" href="${ctxPath}/framework/scripts/ext/resources/css/ext-all.css" />

 EXT4 引入

<link rel="stylesheet" type="text/css"  href="./ext4/resources/css/ext-all.css">
<script type="text/javascript" src="./ext4/bootstrap.js"></script>

 JS中声明对象方法用prototype关键字

Object.prototype.get=function(key,defVal){
				if(this[key]){
					return this[key];
				}
				return defValue;
			}
			var person={name:'UNKNOW',age:26};
			person.name='xiaoming';
			Ext.MessageBox.alert("title",person.get('name'));

声明对象有两种形式

1:普通形式

function User(){
	//相当于java的private 私有变量
	var name='xiaolong';
	//相当于java的public变量
	this.age=26;
	this.getName=function(){
		return name;
	}
};

 2:json形式

var person ={ name:'xiaoming',age:25,getName:function(){return this['name']} };

 

 区别在于 json申明的对象不需要new就可直接使用,普通形式申明的对象须new后才能使用。

 

Ext添加异步加载js的新功能

Ext.onReady(function() {
			Ext.Loader.setConfig({
						enabled : true, // 一定用为true不然会找不到 js.MyWin
						paths : {
							myApp : 'js' // 不知道用什么用
						}
					});
			var myWin = Ext.create("js.MyWin"// 这儿会异步加载 js/MyWin.js
					, {
						html : 'ffff',
						price:600,//初始换config里的price变量
						xxx:'vvv'
						// requires : ['myApp']//异步加载
				})
				alert(myWin.getPrice());
			Ext.get('test1').on('click', function(t1) {
						myWin.setNewTitle();
						
						myWin.show();
					})
		});

 

 

Ext.define()方法的 config 自动生成属性get和set

Ext.define("js.MyWin", {
		config: {
			   price: 500
			},
			extend : 'Ext.window.Window',
			width : 300,
			height : 400,
			newTitle : 'new title',
			setNewTitle : function() {
				this.title = this.newTitle;
			},
			initComponent : function() {
				this.callParent();
				
			}
		});

 
Ext.define 的mixins   类的混合 作用相当于继承

Ext.define("say",{
			cansay:function(){
				alert("hello");
			}
		})
		Ext.define("sing",{
			sing:function(){
				alert("sing hello 123");
			}
		})
		Ext.define('user',{
			mixins :{//相当于继承
				say : 'say',
				sing: 'sing'
			}
		});
		var u = Ext.create("user",{});
		u.cansay();
		u.sing();

 Ext.data.Model相当于数据库中的一张表

Ext.onReady(function() {
	Ext.data.validations.lengthMessage = '长度不正确';//改变验证错误提示信息
	Ext.define("Person", {//定义一Model的子类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
						}],
				proxy : {//设置加载代理
					type : 'ajax',
					url : '/ext-helloword/lesson3.jsp'
				}

			});
	Ext.apply(Ext.data.validations, {//重写Ext.data.validations类的属性
				lengthMessage : '长度不正确xxx'
			});

	var user = Ext.regModel("User", {
				fields : [{
							name : 'name',
							type : 'auto'
						}, {
							name : 'age',
							type : 'int'
						}, {
							name : 'email',
							type : 'auto'
						}]
			})

	var person = new Person({
				nam : 'xiaoming',
				age : 16,
				email : 'xiaoming@qq.com'
			});
	var P1=Ext.ModelManager.getModel("Person");//得到数据模型
	P1.load('1', {//重新加载数据,参数1 会作为id传到后台
				success : function(p) {
					console.log(p.data.name); // 
				}
			});
				/*
	var errors = person.validate();//调用验证
	var errorMsg = [];
	errors.each(function(item) {
				alert(item.field + item.message);
				errorMsg.push(item.field + item.message);

			})
		// Ext.MessageBox.alert("title", person.get('name'));
	
		 * var user1 = Ext.create("User", { name : 'xiaolong', age : 26, email :
		 * 'xiaolong@qq.com' }); Ext.MessageBox.alert(user1.get('name')); var
		 * person2 = Ext.ModelManager.create({ name : 'longwu' }, "Person")
		 * alert(person2.get('name'));
		 */
	});

 

Ext.data.proxy包

保存数据到本地浏览器session

Ext.onReady(function() {
			Ext.regModel("person", {
						fields : [{
									name : 'name',
									type : 'auto'
								}, {
									name : 'age',
									type : 'int'
								}],
						proxy : {
							type : 'sessionstorage',//保存到本地session 保存到本地coockes用localstorage
							id : 'twitter-Searches_session'
						}
					});

			var store = new Ext.data.Store({
						model : person
					});
			store.add({
						name : 'xiaolong',
						age : 22
					});
			store.sync();//保存数据
			store.load();
			var msg = [];
			store.each(function(item) {
						msg.push(item.get('name')+"\n");
					});
			alert(msg)
		});

 

保存到浏览器内存

Ext.onReady(function() {
			Ext.regModel("user", {
						fields : [{
									name : 'name',
									type : 'auto'
								}, {
									name : 'age',
									type : 'int'
								}, {
									name : 'email',
									type : 'auto'
								}]

					});
			var data1 = [{
						name : 'cccc.com',
						age : 22,
						email : 'xxdf@fff.com'
					}, {
						name : 'xiaoming',
						age : 23,
						email : 'xxxc@126.com'
					}];
			var memoryProxy = Ext.create("Ext.data.proxy.Memory", {//创建本地内储
						data : data1,
						model : user
					});
			var data2 = [{
						name : '444',
						age : 42,
						email : 'fdfds'
					}];
			data1.push({name:'xxxx',age:22,email:'fff'});//放入一条数据
			memoryProxy.update(new Ext.data.Operation({//此处的更新方法没用
						action: 'update',
						data : data2
					}));
			
			memoryProxy.read(new Ext.data.Operation(), function(result) {
						var datas = result.resultSet.records;
						Ext.Array.each(datas, function(item) {
									alert(item.get('name'));
								});
					});
		});

 Ext4 读写器

Reader : 主要用于将proxy数据代理读取的数据按照不同的规则进行解析,讲解析好的数据保存到Modle中
结构图
 Ext.data.reader.Reader 读取器的根类
  Ext.data.reader.Json JSON格式的读取器
   Ext.data.reader.Array 扩展JSON的Array读取器
  Ext.data.reader.Xml XML格式的读取器
Writer
结构图
 Ext.data.writer.Writer
  Ext.data.writer.Json 对象被解释成JSON的形式传到后台
  Ext.data.writer.Xml  对象被解释成XML的形式传到后台

Ext.onReady(function(){
		var userData = {
			//total : 200,
			count:250,
			user:[{auditor:'yunfengcheng',info:{
				userID:'1',
				name:'uspcat.com',
				orders:[
					{id:'001',name:'pen'},
					{id:'002',name:'book'}
				]
			}}]
		};
		//model
		Ext.regModel("user",{
			fields:[
				{name:'userID',type:'string'},
				{name:'name',type:'string'}
			],
			hasMany: {model: 'order'}
		});
		Ext.regModel("order",{
			fields:[
				{name:'id',type:'string'},
				{name:'name',type:'string'}
			],
			belongsTo: {type: 'belongsTo', model: 'user'}
		});
		var mproxy = Ext.create("Ext.data.proxy.Memory",{
			model:'user',
			data:userData,
			reader:{//解析器
				type:'json',
				root:'user',
				implicitIncludes:true,
				totalProperty:'count',
				record : 'info'//服务器返回的数据可能很负载,用record可以删选出有用的数据信息,装在带Model中
			}
		});
		mproxy.read(new Ext.data.Operation(),function(result){
			var datas = result.resultSet.records;
			alert(result.resultSet.total);
			Ext.Array.each(datas,function(model){
				alert(model.get('name'));
			});
			var user = result.resultSet.records[0];
			var orders = user.orders();
			orders.each(function(order){
				alert(order.get('name'))
			});
			
		})
	});

 xml读取

Ext.onReady(function(){
		Ext.regModel("user",{
			fields:[
				{name:'name'},
				{name:'id'}
			],
			proxy:{
				type:'ajax',
				url:'users.xml',
				reader:{
					type:'xml',
					record:'user'//记录名/*<users>
								<user>
							<name>uspcat.com</name>
								<id>00101</id>
								</user>
							</users>*/
				}
			}
		});	
		var user = Ext.ModelManager.getModel('user');
		user.load(1,{
			success:function(model){
				alert(model)
				alert(model.get('id'))
			}
		})
	});

 读取后台Array

Ext.onReady(function(){
	Ext.regModel("person",{
		fields:[
			'name','age'
//			{name:'name'},
//			{name:'age'}
		],
		proxy :{
			type:'ajax',
			url:'person.jsp',
			reader:{
				type:'array'
			}
		}
	});
		var person = Ext.ModelManager.getModel('person');
		person.load(1,{
			success:function(model){
				alert(model.get('name'))
			}
		})
});
/*后台JSP数据<%@page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%
	response.getWriter().write("[['yunfengcheng',26]]");
%>*/

 

分享到:
评论

相关推荐

    ext学习笔记代码

    ext学习笔记代码 ext学习笔记代码 ext学习笔记代码

    ext学习资料 20篇详细学习笔记 初学者ext学习的文档

    这份"ext学习资料 20篇详细学习笔记 初学者ext学习的文档"是针对EXT初学者的一份宝贵资源,旨在帮助初学者快速入门EXT开发。 EXT的学习通常包括以下几个核心部分: 1. **EXT基础**:首先,你需要了解EXT的基本概念...

    Ext学习笔记

    Ext JS4学习教程+笔记(一) Ext JS4学习教程+笔记(二)事件处理 Ext JS4学习教程+笔记(六)DataView面板 Ext JS4学习教程+笔记(七)树面板Tree Panel Ext JS4学习教程+笔记(三)Ajax请求 ...Ext学习网址

    Ext学习和学习笔记

    里面包括Ext学习.doc和Ext学习笔记.doc两份资料。来自网上。

    Gwt-ext学习笔记

    在阅读《Gwt-ext学习笔记.pdf》这份资料时,应重点学习上述知识点,并通过实践项目来加深理解。同时,关注Gwt-ext的更新和社区资源,以便获取最新的API信息和最佳实践。不断练习和探索,你将能够熟练运用Gwt-ext构建...

    Yui_ext 学习笔记

    【Yui_ext 学习笔记】 Yui_ext 是基于 Yahoo! UI Library (YUI) 的扩展,主要用于构建富客户端的 Web 应用程序。这篇学习笔记主要介绍了 Yui_ext 的基础知识,适合对 JavaScript 和 HTML DOM 有一定了解的初学者。 ...

    EXT学习笔记-项目应用实践

    这篇EXT学习笔记主要涵盖了EXTJS中面向对象编程的一些关键概念和实践,包括命名空间、类定义、构造函数、属性与方法的访问控制(私有和公有)、静态属性与方法以及继承机制。 1. **命名空间**:在EXTJS中,命名空间...

    Gwt-ext学习笔记之基础篇

    ### Gwt-ext学习笔记之基础篇 #### 一、安装CypalStudio工具 为了能够开始Gwt-ext的学习之旅,首先需要确保开发环境已经搭建好。CypalStudio是一款非常实用的工具,它能帮助开发者更高效地进行GWT项目的开发。 1....

    ext 4.0 学习笔记.doc

    EXT 4.0 是一款流行的JavaScript库,专门用于构建富...EXT 4.0提供了丰富的API文档,允许开发者深入学习并自定义更多功能,如分页、筛选、编辑等。对于初学者来说,了解和实践这些基本概念是掌握EXT 4.0的第一步。

    Ext 手册+学习笔记+资料+实例

    Ext 手册+学习笔记+资料+实例 Ext 手册+学习笔记+资料+实例 Ext 手册+学习笔记+资料+实例

    十分有用有帮助的EXT学习笔记

    以下是对EXT学习笔记中涉及的关键知识点的详细说明: 1. **EXT Form**: EXT中的表单组件是构建用户交互界面的重要部分。它们允许用户输入数据并将其提交到服务器。EXT Form支持多种字段类型,如文本框、选择框、...

    ext api,ext 学习笔记,SWFUpload_多文件上传及部分工具

    在EXT学习笔记中,"What_is_that_Scope_all_about2.htm"可能涉及的是JavaScript作用域和EXT中的scope概念,这对于理解和调试EXT应用中的事件处理和回调函数至关重要。"JsonTool.htm"可能介绍了EXT如何与JSON数据进行...

    Ext2.0的学习笔记

    ### Ext2.0学习笔记:深入理解Ajax与Ext框架 #### Ajax:实现异步无刷新数据交换的关键技术 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它利用了...

    Gwt-Ext学习笔记之进级篇

    在GWT-Ext的学习过程中,首先你需要了解如何定义和实现远程服务。这是GWT的一个核心特性,它允许客户端和服务器之间的安全通信。在GWT中,远程服务调用通常涉及以下几部分: 1. **远程服务接口(Remote Service ...

Global site tag (gtag.js) - Google Analytics