- 浏览: 7944177 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
1 EXT JS 4的数据模型分为三类
1) 实体模型 model
2) 数据代理 proxy,用来处理数据的读取和保存,通过AJAX代理获得服务端的数据
3) 数据读写器:Reader,Writer,用来读原始的数据到MODEL中。
4)数据集:store,保存MODEL对象的客户端缓存,提供了对数据的过滤,排序,查找功能。
2)EXT.DATA.MODEL,前身为EXT 3中的ext.data.record类,进行了增强;
模型分为 fields:字段定义,proxy:数据代理,associations:模型管理 Validations:数据校验。
3)基本数据模型
Ext.onReady(function(){
//注册用户数据模型User
Ext.regModel('User', {
fields: [//定义模型字段
{name: 'name', type: 'string'},
{name: 'age', type: 'int'},
{name: 'phone', type: 'string'}
]
});
//创建User模型的实体对象
var user = Ext.ModelMgr.create({
name : 'tom',
age : 24,
phone: '555-555-5555'
}, 'User');
//获取员工姓名
alert(user.get('name'));
});
4)ext.validations
Ext.onReady(function(){
//定义默认的验证提示信息
Ext.data.validations.presenceMessage = '必须是有效值。';
Ext.data.validations.lengthMessage = '长度错误。';
Ext.data.validations.formatMessage = '格式错误。';
Ext.data.validations.inclusionMessage = '没有包括在可接受的数据中。';
Ext.data.validations.exclusionMessage = '不是可接受的值。';
//自定义数值范围验证
Ext.apply(Ext.data.validations,{
number : function(config, value){
if (value === undefined) {
return false;
}
var min = config.min,
max = config.max;
if ((min && value < min) || (max && value > max)) {
return false;
} else {
return true;
}
},
numberMessage : '数值范围错误。'
});
//注册用户数据模型User
Ext.regModel('User', {
fields: [//定义模型字段
{name: 'name', type: 'string'},
{name: 'age', type: 'int'},
{name: 'phone', type: 'string'},
{name: 'gender', type: 'string'},
{name: 'username', type: 'string'},
{name: 'alive', type: 'boolean', defaultValue: true}
],
validations: [
{type: 'presence', field: 'age'},
{type: 'number', field: 'age', min : 30},
{type: 'length', field: 'name', min: 2},
{type: 'inclusion', field: 'gender', list: ['男', '女']},
{type: 'exclusion', field: 'username', list: ['admin@xx.xx', 'user@xx.xx']},
{type: 'format', field: 'username',
//校验用户名是否为电子邮件格式
matcher: /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/
}
]
});
//创建User模型的实体对象
var user = Ext.ModelMgr.create({
name : 'tom',
age : 24,
gender : 'man',
username: 'abc'
}, 'User');
//执行数据验证
var errors = user.validate();
//获取验证信息
var message = [];
errors.each(function(v){
message.push(v.field+' : '+v.message)
});
alert(message.join('\n'));
});
5 数据代理:在4。0前,数据代理是store一部分,读写数据必须通过store,新版本中数据代理可以在数据模型中配置。
6 EXT 4中,支持一对多和多对一两种关系。
一对多例子:
Ext.onReady(function(){
//注册用户数据模型User
Ext.regModel('User', {
fields: [//定义模型字段
{name: 'name', type: 'string'},//用户名称
{name: 'id', type: 'int'}//用户id
],
//User与Product是一对多关系
hasMany: {model: 'Product', name:'getProducts',autoLoad : false},
//其中autoload为FALSE,表示延迟加载
proxy: {
type : 'ajax',
url : 'userServer.jsp'
}
});
//注册产品数据模型Product
Ext.regModel('Product', {
fields: [//定义模型字段
{name: 'id', type: 'int'},//产品id
{name: 'title', type: 'string'},//产品名称
{name: 'user_id', type: 'int'}//用户id
],
proxy: {
type : 'ajax',
url : 'ProductServer.jsp',
reader: {
type: 'json',
root: 'products'
}
}
});
//创建User实例
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){
var msg = [];
for(var i = 0; i < records.length; i++){
var rec = records[i];
msg.push('产品名称:'+rec.get('title')+' 用户id:'+rec.get('user_id'));
}
alert(msg.join('\n'));
}
});
}
});
});
7 多对一关系
Ext.onReady(function(){
//注册分类数据模型Category
Ext.regModel('Category', {
fields: [//定义模型字段
{name: 'type', type: 'string'},//产品类型名称
{name: 'id', type: 'int'}//产品类型id
],
proxy: {
type : 'ajax',
url : 'CategoryServer.jsp'
}
});
//注册产品数据模型Product
Ext.regModel('Product', {
fields: [//定义模型字段
{name: 'id', type: 'int'},//产品id
{name: 'title', type: 'string'},//产品名称
{name: 'category_id', type: 'int'}//用户id
],
belongsTo : 'Category'
});
//创建product实例
var product = new Product({
id: 100,
category_id: 1,
title: '产品1'
});
product.getCategory(function(category, operation){
//获取类型名称
alert(category.get('type'));
});
});
8 PROXY介绍
分为客户端和服务端代理
ext.data.proxy.proxy为所有代理类的父类,有四个执行操作CRUD封装了。
1)ext.data.proxy.memory为ext.data.proxy.client的子类
Ext.onReady(function(){
//创建数据模型
Ext.regModel('User', {
fields: ['id','name','age']
});
//定义内存数据变量
var userData = {
users : [
{ id: 1, name: '张三', age: 20 },
{ id: 2, name: '李四', age: 30 },
{ id: 3, name: '王五', age: 40 }
]
};
//创建memory代理
var memoryProxy = new Ext.data.proxy.Memory({
model : 'User',
reader: {
root: 'users'
},
data : userData
});
//读取数据
memoryProxy.read(new Ext.data.Operation(), callBack)
//数据读取之后的回调函数
function callBack(result){ //load方法的回调函数
var totalRecords = result.resultSet.total;
alert('读取内存数据,记录总是:'+totalRecords);
}
});
2 )ext.data.proxy.webstorage分为ext.data.proxy.localstorage和ext.data.proxy.sessionstorage
都是支持HTML5的DOMSTORAGE才有用的
比如
Ext.onReady(function(){
//创建数据模型
Ext.regModel('User', {
fields: ['id','name','age'],
proxy: {
type: 'localstorage',//使用Ext.data.proxy.LocalStorage代理
id : 'User-Searches'//代理数据的唯一标志
}
});
var store = new Ext.data.Store({
model: "User"
});
//添加数据
store.add({name: '张三', age: 20});
store.add({name: '李四', age: 30});
//保存数据
store.sync();
//读取数据
store.load();
var msg = [];
store.each(function(rec){
msg.push(rec.get('id')+' '+rec.get('name')+' '+rec.get('age'));
});
alert(msg.join('\n'));
});
3) ext.data.proxy.server服务端类,其中分为三个子类
3.1 ext.data.proxy.ajax
Ext.onReady(function(){
//创建数据模型
Ext.regModel('Person', {
fields: ['name','age']
});
//创建Ajax代理
var ajaxProxy = new Ext.data.proxy.Ajax({
url : 'personServer.jsp',
model: 'Person',
reader: 'json'
});
//创建请求参数对象
var operation = new Ext.data.Operation({
action: 'read'//设置请求动作为read
});
//读取数据
ajaxProxy.doRequest(operation,callBack);
//doRequest方法的回调函数
function callBack(operation){
//获取原始响应数据
var responseText = operation.response.responseText;
//获得记录总数
var totalRecords = operation.resultSet.totalRecords;
//获得记录数组
var records = operation.resultSet.records;
alert('使用Ajax代理读取远程数据,记录总是:'+totalRecords);
}
});
其中operation中可以定义如排序,过滤,分组等参数
4) EXT JS 4中支持REST,EXT.DATA.PROXY.REST
Ext.onReady(function(){
//创建数据模型
Ext.regModel('Person', {
fields: ['id','name','age'],
proxy: {
type: 'rest',//使用Ext.data.proxy.Rest代理
url : '/persons'
}
});
var person1 = Ext.ModelManager.create({name: '张三', age: 20}, 'Person');
person1.save();//由于是新建数据未指定id,因此执行create方法。
var person2 = Ext.ModelManager.create({id:200,name: '李四', age: 20}, 'Person');
person2.save();//由于指定id为200,因此执行update方法。
var person3 = Ext.ModelManager.getModel('Person');
person3.load(300)//调用read方法,读取id为300的数据。
var person4 = Ext.ModelManager.create({id:400,name: '王五', age: 20}, 'Person');
person4.destroy();//由于指定id为400,因此执行destroy方法。
});
5) EXT.DATA.PROXY.JSONP
Ext.onReady(function(){
//创建数据模型
Ext.regModel('Person', {
fields: ['id','name','age'],
proxy: {
type: 'jsonp',//使用Ext.data.proxy.JsonP代理
url : 'http://192.168.1.150:8080/JsonPProxyServer.jsp'
}
});
var person = Ext.ModelManager.getModel('Person');
//跨域读取数据
person.load(1,{
success: function(rec) {
alert('姓名:'+rec.get('name')+'\n年龄:'+rec.get('age'));
}
});
});
服务端:
<%
String id = request.getParameter("id");
String personName = "{id:"+id+",name:'张三',age:30}";
boolean jsonP = false;
//获取回调函数名称
String cb = request.getParameter("callback");
if (cb != null) {
jsonP = true;
response.setContentType("text/javascript;charset=UTF-8");
} else {
response.setContentType("application/x-json;charset=UTF-8");
}
String msg = "";
if (jsonP ) {
msg = cb + "(";
}
msg += personName;
if (jsonP ) {
msg += ");";
}
response.getWriter().write(msg);
%>
9 Reader读取器
相当于在原始数据格式与EXT JS标准格式之间进行转换.
A EXT.DATA.READER.JSON
Ext.onReady(function(){
//JSON格式的用户及订单信息
var userData = {
"total" : 2000,
"users": [{
"id": 123,
"name": "张三",
"orders": [{
"id": 50,
"total" : 100
}]
}]
}
//定义用户User模型
Ext.regModel("User", {
fields: [ 'id', 'name' ],
hasMany: 'Order'//定义User与Order之间的一对多关系
});
//定义订单Order模型
Ext.regModel("Order", {
fields: [ 'id', 'total' ],
belongsTo: 'User'//定义Order与User之间的多对一关系
});
//创建memory代理
var memoryProxy = new Ext.data.proxy.Memory({
model : 'User',
reader: {
type: 'json',//Ext.data.reader.Json读取器
root: 'users'
},
data : userData
});
//读取数据
memoryProxy.read(new Ext.data.Operation(), callBack)
//数据读取之后的回调函数
function callBack(result){
//获取总记录数
var count = result.resultSet.total;
//获取第一个用户信息
var user = result.resultSet.records[0];
//获取该用户的第一个账单信息
var order = user.orders().getAt(0);
alert('总记录数:'+count+
'\n姓名:'+user.get('name')+
'\n账单金额:'+order.get('total'));
}
});
B 读复杂的JSON数据
Ext.onReady(function(){
//JSON格式的用户及订单信息
var userData = {
"users": [{
"searchDate" : "2011-04-24",//查询时间
"role" : "admin",//查询人角色
"info" : {
"id": 123,
"name": "张三"
}
}]
}
//定义用户User模型
Ext.regModel("User", {
fields: [ 'id', 'name' ]
});
//创建memory代理
var memoryProxy = new Ext.data.proxy.Memory({
model : 'User',
reader: {
type: 'json',//Ext.data.reader.Json读取器
root: 'users',
record : 'info'//定位有效数据的位置
},
data : userData
});
//读取数据
memoryProxy.read(new Ext.data.Operation(), callBack)
//数据读取之后的回调函数
function callBack(result){
//获取第一个用户信息
var user = result.resultSet.records[0];
alert('姓名:'+user.get('name'));
}
});
C 读取XML
Ext.onReady(function(){
//定义用户User模型
Ext.regModel("User", {
fields: [ 'id', 'name' ],
proxy: {
type: 'ajax',
url : 'xmlServer.jsp',
reader: {
type: 'xml',//Ext.data.reader.Xml解析器
record: 'user'
}
}
});
var user = Ext.ModelManager.getModel('User');
//通过代理读取数据
user.load(1, {
success: function(rec) {
alert("XML读取器示例:\n" +
"用户姓名:"+rec.get('name'));
}
});
});
10 writer写入器
1)ext.data.writer.json:将实体模型MODEL中的数据转为JSON格式发到服务端
Ext.onReady(function(){
//定义用户User模型
Ext.regModel("User", {
fields: ['id', 'name', 'age' ],
proxy: {
type: 'ajax',
url : 'writerServer.jsp',
writer : {
type: 'json'//Ext.data.writer.Json读取器
}
}
});
//创建User模型的实体对象
var user = Ext.ModelMgr.create({
id : 1,
name : 'tom',
age : 24
}, 'User');
//保存数据,格式化后的数据将被发往服务端
user.save({
success : function(){alert("数据保存成功")},
failure : function(){alert("数据保存失败")}
});
});
11 STORE数据集
为客户端MODEL的缓存,通过数据代理加载数据,也可以LOADATE的手工方法加载数据.ext.data.store提供了排序,
过滤,查找等功能
1)简单的
Ext.onReady(function(){
//定义用户User模型
Ext.regModel("User", {
fields: ['name', 'age' ],
proxy: {
type: 'memory'
}
});
//创建数据集对象
var myStore = new Ext.data.Store({
autoLoad: true,
data : [{name: '张三', age : 20},
{name: '李四', age : 30}],
model: 'User'
});
//遍历Store中的记录
var msg = ['遍历Store中的记录:'];
myStore.each(function(rec){
msg.push('姓名:'+rec.get('name')+' 年龄:'+rec.get('age'));
});
alert(msg.join('\n'));
});
2) ARRAYSTORE
Ext.onReady(function(){
//定义用户User模型
Ext.regModel("User", {
fields: ['name', 'age' ],
proxy: 'memory'
});
//创建ArrayStore数据集对象
var myStore = new Ext.data.ArrayStore({
autoLoad: true,
data : [['张三',20],['李四',30]],//数组数据
model: 'User'
});
//遍历Store中的记录
var msg = ['遍历ArrayStore中的记录:'];
myStore.each(function(rec){
msg.push('姓名:'+rec.get('name')+' 年龄:'+rec.get('age'));
});
alert(msg.join('\n'));
});
1) 实体模型 model
2) 数据代理 proxy,用来处理数据的读取和保存,通过AJAX代理获得服务端的数据
3) 数据读写器:Reader,Writer,用来读原始的数据到MODEL中。
4)数据集:store,保存MODEL对象的客户端缓存,提供了对数据的过滤,排序,查找功能。
2)EXT.DATA.MODEL,前身为EXT 3中的ext.data.record类,进行了增强;
模型分为 fields:字段定义,proxy:数据代理,associations:模型管理 Validations:数据校验。
3)基本数据模型
Ext.onReady(function(){
//注册用户数据模型User
Ext.regModel('User', {
fields: [//定义模型字段
{name: 'name', type: 'string'},
{name: 'age', type: 'int'},
{name: 'phone', type: 'string'}
]
});
//创建User模型的实体对象
var user = Ext.ModelMgr.create({
name : 'tom',
age : 24,
phone: '555-555-5555'
}, 'User');
//获取员工姓名
alert(user.get('name'));
});
4)ext.validations
Ext.onReady(function(){
//定义默认的验证提示信息
Ext.data.validations.presenceMessage = '必须是有效值。';
Ext.data.validations.lengthMessage = '长度错误。';
Ext.data.validations.formatMessage = '格式错误。';
Ext.data.validations.inclusionMessage = '没有包括在可接受的数据中。';
Ext.data.validations.exclusionMessage = '不是可接受的值。';
//自定义数值范围验证
Ext.apply(Ext.data.validations,{
number : function(config, value){
if (value === undefined) {
return false;
}
var min = config.min,
max = config.max;
if ((min && value < min) || (max && value > max)) {
return false;
} else {
return true;
}
},
numberMessage : '数值范围错误。'
});
//注册用户数据模型User
Ext.regModel('User', {
fields: [//定义模型字段
{name: 'name', type: 'string'},
{name: 'age', type: 'int'},
{name: 'phone', type: 'string'},
{name: 'gender', type: 'string'},
{name: 'username', type: 'string'},
{name: 'alive', type: 'boolean', defaultValue: true}
],
validations: [
{type: 'presence', field: 'age'},
{type: 'number', field: 'age', min : 30},
{type: 'length', field: 'name', min: 2},
{type: 'inclusion', field: 'gender', list: ['男', '女']},
{type: 'exclusion', field: 'username', list: ['admin@xx.xx', 'user@xx.xx']},
{type: 'format', field: 'username',
//校验用户名是否为电子邮件格式
matcher: /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/
}
]
});
//创建User模型的实体对象
var user = Ext.ModelMgr.create({
name : 'tom',
age : 24,
gender : 'man',
username: 'abc'
}, 'User');
//执行数据验证
var errors = user.validate();
//获取验证信息
var message = [];
errors.each(function(v){
message.push(v.field+' : '+v.message)
});
alert(message.join('\n'));
});
5 数据代理:在4。0前,数据代理是store一部分,读写数据必须通过store,新版本中数据代理可以在数据模型中配置。
6 EXT 4中,支持一对多和多对一两种关系。
一对多例子:
Ext.onReady(function(){
//注册用户数据模型User
Ext.regModel('User', {
fields: [//定义模型字段
{name: 'name', type: 'string'},//用户名称
{name: 'id', type: 'int'}//用户id
],
//User与Product是一对多关系
hasMany: {model: 'Product', name:'getProducts',autoLoad : false},
//其中autoload为FALSE,表示延迟加载
proxy: {
type : 'ajax',
url : 'userServer.jsp'
}
});
//注册产品数据模型Product
Ext.regModel('Product', {
fields: [//定义模型字段
{name: 'id', type: 'int'},//产品id
{name: 'title', type: 'string'},//产品名称
{name: 'user_id', type: 'int'}//用户id
],
proxy: {
type : 'ajax',
url : 'ProductServer.jsp',
reader: {
type: 'json',
root: 'products'
}
}
});
//创建User实例
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){
var msg = [];
for(var i = 0; i < records.length; i++){
var rec = records[i];
msg.push('产品名称:'+rec.get('title')+' 用户id:'+rec.get('user_id'));
}
alert(msg.join('\n'));
}
});
}
});
});
7 多对一关系
Ext.onReady(function(){
//注册分类数据模型Category
Ext.regModel('Category', {
fields: [//定义模型字段
{name: 'type', type: 'string'},//产品类型名称
{name: 'id', type: 'int'}//产品类型id
],
proxy: {
type : 'ajax',
url : 'CategoryServer.jsp'
}
});
//注册产品数据模型Product
Ext.regModel('Product', {
fields: [//定义模型字段
{name: 'id', type: 'int'},//产品id
{name: 'title', type: 'string'},//产品名称
{name: 'category_id', type: 'int'}//用户id
],
belongsTo : 'Category'
});
//创建product实例
var product = new Product({
id: 100,
category_id: 1,
title: '产品1'
});
product.getCategory(function(category, operation){
//获取类型名称
alert(category.get('type'));
});
});
8 PROXY介绍
分为客户端和服务端代理
ext.data.proxy.proxy为所有代理类的父类,有四个执行操作CRUD封装了。
1)ext.data.proxy.memory为ext.data.proxy.client的子类
Ext.onReady(function(){
//创建数据模型
Ext.regModel('User', {
fields: ['id','name','age']
});
//定义内存数据变量
var userData = {
users : [
{ id: 1, name: '张三', age: 20 },
{ id: 2, name: '李四', age: 30 },
{ id: 3, name: '王五', age: 40 }
]
};
//创建memory代理
var memoryProxy = new Ext.data.proxy.Memory({
model : 'User',
reader: {
root: 'users'
},
data : userData
});
//读取数据
memoryProxy.read(new Ext.data.Operation(), callBack)
//数据读取之后的回调函数
function callBack(result){ //load方法的回调函数
var totalRecords = result.resultSet.total;
alert('读取内存数据,记录总是:'+totalRecords);
}
});
2 )ext.data.proxy.webstorage分为ext.data.proxy.localstorage和ext.data.proxy.sessionstorage
都是支持HTML5的DOMSTORAGE才有用的
比如
Ext.onReady(function(){
//创建数据模型
Ext.regModel('User', {
fields: ['id','name','age'],
proxy: {
type: 'localstorage',//使用Ext.data.proxy.LocalStorage代理
id : 'User-Searches'//代理数据的唯一标志
}
});
var store = new Ext.data.Store({
model: "User"
});
//添加数据
store.add({name: '张三', age: 20});
store.add({name: '李四', age: 30});
//保存数据
store.sync();
//读取数据
store.load();
var msg = [];
store.each(function(rec){
msg.push(rec.get('id')+' '+rec.get('name')+' '+rec.get('age'));
});
alert(msg.join('\n'));
});
3) ext.data.proxy.server服务端类,其中分为三个子类
3.1 ext.data.proxy.ajax
Ext.onReady(function(){
//创建数据模型
Ext.regModel('Person', {
fields: ['name','age']
});
//创建Ajax代理
var ajaxProxy = new Ext.data.proxy.Ajax({
url : 'personServer.jsp',
model: 'Person',
reader: 'json'
});
//创建请求参数对象
var operation = new Ext.data.Operation({
action: 'read'//设置请求动作为read
});
//读取数据
ajaxProxy.doRequest(operation,callBack);
//doRequest方法的回调函数
function callBack(operation){
//获取原始响应数据
var responseText = operation.response.responseText;
//获得记录总数
var totalRecords = operation.resultSet.totalRecords;
//获得记录数组
var records = operation.resultSet.records;
alert('使用Ajax代理读取远程数据,记录总是:'+totalRecords);
}
});
其中operation中可以定义如排序,过滤,分组等参数
4) EXT JS 4中支持REST,EXT.DATA.PROXY.REST
Ext.onReady(function(){
//创建数据模型
Ext.regModel('Person', {
fields: ['id','name','age'],
proxy: {
type: 'rest',//使用Ext.data.proxy.Rest代理
url : '/persons'
}
});
var person1 = Ext.ModelManager.create({name: '张三', age: 20}, 'Person');
person1.save();//由于是新建数据未指定id,因此执行create方法。
var person2 = Ext.ModelManager.create({id:200,name: '李四', age: 20}, 'Person');
person2.save();//由于指定id为200,因此执行update方法。
var person3 = Ext.ModelManager.getModel('Person');
person3.load(300)//调用read方法,读取id为300的数据。
var person4 = Ext.ModelManager.create({id:400,name: '王五', age: 20}, 'Person');
person4.destroy();//由于指定id为400,因此执行destroy方法。
});
5) EXT.DATA.PROXY.JSONP
Ext.onReady(function(){
//创建数据模型
Ext.regModel('Person', {
fields: ['id','name','age'],
proxy: {
type: 'jsonp',//使用Ext.data.proxy.JsonP代理
url : 'http://192.168.1.150:8080/JsonPProxyServer.jsp'
}
});
var person = Ext.ModelManager.getModel('Person');
//跨域读取数据
person.load(1,{
success: function(rec) {
alert('姓名:'+rec.get('name')+'\n年龄:'+rec.get('age'));
}
});
});
服务端:
<%
String id = request.getParameter("id");
String personName = "{id:"+id+",name:'张三',age:30}";
boolean jsonP = false;
//获取回调函数名称
String cb = request.getParameter("callback");
if (cb != null) {
jsonP = true;
response.setContentType("text/javascript;charset=UTF-8");
} else {
response.setContentType("application/x-json;charset=UTF-8");
}
String msg = "";
if (jsonP ) {
msg = cb + "(";
}
msg += personName;
if (jsonP ) {
msg += ");";
}
response.getWriter().write(msg);
%>
9 Reader读取器
相当于在原始数据格式与EXT JS标准格式之间进行转换.
A EXT.DATA.READER.JSON
Ext.onReady(function(){
//JSON格式的用户及订单信息
var userData = {
"total" : 2000,
"users": [{
"id": 123,
"name": "张三",
"orders": [{
"id": 50,
"total" : 100
}]
}]
}
//定义用户User模型
Ext.regModel("User", {
fields: [ 'id', 'name' ],
hasMany: 'Order'//定义User与Order之间的一对多关系
});
//定义订单Order模型
Ext.regModel("Order", {
fields: [ 'id', 'total' ],
belongsTo: 'User'//定义Order与User之间的多对一关系
});
//创建memory代理
var memoryProxy = new Ext.data.proxy.Memory({
model : 'User',
reader: {
type: 'json',//Ext.data.reader.Json读取器
root: 'users'
},
data : userData
});
//读取数据
memoryProxy.read(new Ext.data.Operation(), callBack)
//数据读取之后的回调函数
function callBack(result){
//获取总记录数
var count = result.resultSet.total;
//获取第一个用户信息
var user = result.resultSet.records[0];
//获取该用户的第一个账单信息
var order = user.orders().getAt(0);
alert('总记录数:'+count+
'\n姓名:'+user.get('name')+
'\n账单金额:'+order.get('total'));
}
});
B 读复杂的JSON数据
Ext.onReady(function(){
//JSON格式的用户及订单信息
var userData = {
"users": [{
"searchDate" : "2011-04-24",//查询时间
"role" : "admin",//查询人角色
"info" : {
"id": 123,
"name": "张三"
}
}]
}
//定义用户User模型
Ext.regModel("User", {
fields: [ 'id', 'name' ]
});
//创建memory代理
var memoryProxy = new Ext.data.proxy.Memory({
model : 'User',
reader: {
type: 'json',//Ext.data.reader.Json读取器
root: 'users',
record : 'info'//定位有效数据的位置
},
data : userData
});
//读取数据
memoryProxy.read(new Ext.data.Operation(), callBack)
//数据读取之后的回调函数
function callBack(result){
//获取第一个用户信息
var user = result.resultSet.records[0];
alert('姓名:'+user.get('name'));
}
});
C 读取XML
Ext.onReady(function(){
//定义用户User模型
Ext.regModel("User", {
fields: [ 'id', 'name' ],
proxy: {
type: 'ajax',
url : 'xmlServer.jsp',
reader: {
type: 'xml',//Ext.data.reader.Xml解析器
record: 'user'
}
}
});
var user = Ext.ModelManager.getModel('User');
//通过代理读取数据
user.load(1, {
success: function(rec) {
alert("XML读取器示例:\n" +
"用户姓名:"+rec.get('name'));
}
});
});
10 writer写入器
1)ext.data.writer.json:将实体模型MODEL中的数据转为JSON格式发到服务端
Ext.onReady(function(){
//定义用户User模型
Ext.regModel("User", {
fields: ['id', 'name', 'age' ],
proxy: {
type: 'ajax',
url : 'writerServer.jsp',
writer : {
type: 'json'//Ext.data.writer.Json读取器
}
}
});
//创建User模型的实体对象
var user = Ext.ModelMgr.create({
id : 1,
name : 'tom',
age : 24
}, 'User');
//保存数据,格式化后的数据将被发往服务端
user.save({
success : function(){alert("数据保存成功")},
failure : function(){alert("数据保存失败")}
});
});
11 STORE数据集
为客户端MODEL的缓存,通过数据代理加载数据,也可以LOADATE的手工方法加载数据.ext.data.store提供了排序,
过滤,查找等功能
1)简单的
Ext.onReady(function(){
//定义用户User模型
Ext.regModel("User", {
fields: ['name', 'age' ],
proxy: {
type: 'memory'
}
});
//创建数据集对象
var myStore = new Ext.data.Store({
autoLoad: true,
data : [{name: '张三', age : 20},
{name: '李四', age : 30}],
model: 'User'
});
//遍历Store中的记录
var msg = ['遍历Store中的记录:'];
myStore.each(function(rec){
msg.push('姓名:'+rec.get('name')+' 年龄:'+rec.get('age'));
});
alert(msg.join('\n'));
});
2) ARRAYSTORE
Ext.onReady(function(){
//定义用户User模型
Ext.regModel("User", {
fields: ['name', 'age' ],
proxy: 'memory'
});
//创建ArrayStore数据集对象
var myStore = new Ext.data.ArrayStore({
autoLoad: true,
data : [['张三',20],['李四',30]],//数组数据
model: 'User'
});
//遍历Store中的记录
var msg = ['遍历ArrayStore中的记录:'];
myStore.each(function(rec){
msg.push('姓名:'+rec.get('name')+' 年龄:'+rec.get('age'));
});
alert(msg.join('\n'));
});
发表评论
-
微信开发工具中时间问题的小坑
2018-02-07 19:07 826刚开始用微信小程序开发工具,每次运行任何应用,都报这个错误: ... -
三篇不错的介绍CSS GRID的文章
2017-12-06 09:08 553三篇不错的介绍CSS GRID的文章: http://www. ... -
双因素认证(2FA)教程
2017-11-03 09:16 1572http://www.ruanyifeng.com/blog/ ... -
es6 中的export
2017-08-20 08:00 822https://juejin.im/post/5998625f ... -
markdown中的空格
2017-08-20 07:53 1702即使手动输入空格, 也是很不推荐的方法。我推荐全角空格,切换 ... -
(转)讲真,别再使用JWT了
2017-08-17 23:21 1013不错的好文: http://insights.thoughtw ... -
(转)手把手教你WebStorm+chrome实现时时调试刷新
2017-08-15 10:50 3027参考: http://jingyan.baidu.com/ar ... -
IntelliJ Idea 2017 免费激活方法
2017-08-15 09:38 93221. 到网站 http://idea.lanyus.com/ ... -
前端框架这么多,该何去何从?
2017-08-04 07:17 649http://insights.thoughtworkers. ... -
记录一个HTML 5画拓扑图的商业公司
2017-07-18 19:56 850http://qunee.com/ DEMO:http:// ... -
vue 2例子学习收集
2017-07-16 11:46 10071 vue2.0手撸闲鱼App https://githu ... -
(收藏)虚拟DOM内部是如何工作的
2017-07-13 22:08 593虚拟DOM内部是如何工作的 https://segmentfa ... -
最近看到的几篇精彩JAVASCRIPT博客文章推荐
2017-07-11 07:10 569【深度长文】JavaScript数组所有API全解密 http ... -
jsonp 跨域原理:深入浅出 jsonp
2017-07-10 19:55 1431https://lzw.me/a/jsonp.html jso ... -
(转)深度长文-JavaScript数组所有API全解密
2017-07-08 19:59 824深度长文-JavaScript数组所有API全解密 http: ... -
(收藏)网页导出PDF的方案
2017-07-06 07:13 982(收藏)网页导出PDF的方案 https://yiqiwuli ... -
Chromium 新的弹窗机制以及 HTML 的 <dialog> 元素
2017-06-28 12:37 1151https://juejin.im/post/59525195 ... -
国内一个不错的大屏UI设计厂家
2017-06-03 19:43 3160http://www.lanlanwork.com/dp.ph ... -
canvas仿芝麻信用分仪表盘
2017-05-28 20:21 1592canvas仿芝麻信用分仪表盘 https://segment ... -
(转)CSS 变量教程
2017-05-10 21:12 579http://www.ruanyifeng.com/blog/ ...
相关推荐
总结来说,"Extjs4 grid使用例子"是一个实践教程,展示了如何在MVC架构下利用ExtJS4的Grid组件处理数据,实现数据的增删改功能。通过这个例子,开发者可以学习到MVC的设计理念,以及如何有效利用Grid组件提升Web应用...
总结起来,在Eclipse中开发Extjs4代码,我们需要: 1. 安装Eclipse并确保其支持JavaScript开发。 2. 安装Spket插件以获取代码提示和智能感知功能。 3. 导入`ext-40.jsb2`文件,使Spket理解ExtJS4的API。 4. 获取...
总结起来,EXTJS4的学习资料涵盖了如何设置开发环境、采用MVC模式组织代码、搭建应用框架以及使用EXTJS4的动态加载功能和CSS美化界面等关键知识点。通过这些内容,读者可以逐步掌握EXTJS4的开发流程和技术要点,为...
总结来说,这个EXTJS4开发的图片文章管理项目实例展示了前端EXTJS4的强大UI构建能力,后端JAVA的稳定处理性能,以及MYSQL数据库的数据存储功能。通过学习这个实例,开发者可以深入理解EXTJS4的MVC架构,JAVA的Web...
目录 1. ExtJs 结构树 2 ...25. extJs 2.0学习笔记(Ext.Element API总结) 69 26. extJs 2.0学习笔记(Element.js篇) 73 27. extJs 2.0学习笔记(DomHelper.js篇) 76 28. extJs 2.0学习笔记(ext.js篇) 77
这个项目里面包含了本人从开始初学EXTJS4的全部事例:grid、tree、chart图表、文件上传、mvc、还有用户信息注册。里面的一些难点、要点都加了注释,还有一个file.txt文件是本人的小小总结,还没完整。我也是一个第一...
在"ExtJS4 2学习 21 动态菜单与表格数据展示操作总结篇"中,我们将深入探讨两个核心组件:动态菜单(Dynamic Menus)和表格数据展示(Grid Data Display),以及如何在实际应用中进行操作。 动态菜单在Web应用中...
### Extjs4 权威指南知识点总结 #### 一、Extjs4简介与获取途径 - **概述**:Extjs4是一款基于JavaScript的企业级富客户端Web应用程序开发框架,旨在简化前端开发过程,提供丰富的UI组件和强大的数据处理能力。 - ...
总结来说,"ssh+extjs4整合开发"涉及到的技术栈是Java后端开发的强大组合,结合了Spring的灵活性、Struts2的MVC架构以及Hibernate的对象关系映射,再加上EXTJS4的富客户端能力。这种整合使得开发者能够构建出高效、...
在提供的压缩包文件"extjs4.1_TreeGrid"中,可能包含了一些EXTJS 4树形表格组件的示例代码和资源,通过学习和分析这些示例,你可以更好地理解如何在项目中应用这个组件。 总结来说,EXTJS 4的树形表格组件是一个...
### ExtJS4 学习指南知识点详述 #### 一、ExtJS4简介与环境搭建 **1. 获取ExtJS4** - **途径:** 可以通过官方网站 [http://extjs.org.cn/](http://extjs.org.cn/) 获取最新的ExtJS4版本及相关资源。 **2. 搭建...
总结而言,Extjs4开发笔记提供了开发一个基于Extjs4框架和MVC模式的员工管理系统的过程和细节。作者从准备工作讲起,到环境配置、目录结构、文件分离,再到框架搭建,每个环节都详细记录了其开发经验和遇到的问题。...
总结,ExtJS4.0 的 MVC 实现为开发者提供了强大的工具来构建复杂的 Web 应用。通过理解并熟练运用 MVC 架构模式,我们可以创建出具有高效数据管理、灵活用户交互和易于维护的 ExtJS 应用程序。学习和掌握这些知识,...
ExtJS 4 是一款强大的JavaScript框架,用于构建富客户端应用程序。...提供的"Extjs4Charts图表"压缩包文件应该包含了预设的图表示例,可以直接运行查看效果,对于初学者来说,这是一个很好的学习资源。
总结来说,"Extjs4 + Asp.net MVC Demo"是一个很好的学习资源,它演示了如何利用这两种技术构建松耦合的Web应用,实现高效的页面交互和数据管理。通过学习这个Demo,开发者可以掌握前端MVC的组织方式,了解如何在...
本文将根据一个月的学习经验,总结一些对于初学者来说非常有用的小知识点。 #### 二、基础配置与属性 1. **`disabled` 属性**: - 作用:控制组件是否禁用。 - 示例代码:`disabled: true` - 说明:当设置为 `...
【EXTJS 4 开发笔记】系列主要针对初学者,详细介绍了如何使用EXTJS 4进行项目开发,尤其是采用MVC模式。...对于初学者来说,这是一个逐步学习EXTJS 4开发的良好起点,能够帮助他们理解EXTJS 4的核心特性和最佳实践。
以上是对 ExtJS 4.0 技术中文视频中的主要知识点的总结。这些视频涵盖了 ExtJS 4.0 的各个方面,从基础概念到高级功能均有涉及,适合不同程度的学习者观看。希望这些知识点能帮助大家更好地理解和掌握 ExtJS 4.0 的...
总结来说,ExtJS 4的Chart组件提供了一种直观、灵活的方式来创建曲线图,结合其丰富的配置选项和强大的数据处理能力,使得在Web应用中实现数据可视化变得简单易行。通过学习和掌握这些知识,开发者可以构建出具有...
学习EXTJS总结的例子,里面含有Grid以及ExtJs扩展的例子源码...